Hi!请登陆

python高级编程和异步io并发编程——第一章

ldy 2025-4-18 117 4/18

一、python中一切皆对象

1.1、动态语言和静态语言的区别(如python与c++)

  • 动态语言:是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。比如Php、Asp、JavaScript、Python、Perl等等。
  • 静态语言:是编译时变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须声明数据类型。比如Java、C、C++、C#等。

区别:
         静态语言由于强制声明数据类型,让开发工具(IDE)对代码有很强的判断能力,在实现复杂的业务逻辑和开发大型商业系统、以及那些声明周期很长的应用中,开发者可以依托强大的IDE来更高效、更安全地开发。
         动态语言思维不受约束,可以任意发挥,把更多的精力放在产品本身上;集中思考业务逻辑实现,思考过程就是实现过程。

1.2、函数和类也是对象,属于python的一等公民

类是用来实例化对象,但类的本身也是对象。

1.2.1、赋值给一个变量

# 函数
def ask(name='your_name'):
    print(name)
#赋值函数给一个变量
my_func = ask
my_func('peter')

1.2.2、可以添加到集合对象中

# 函数
def ask(name='your_name'):
    print(name)
# 类
class Person:
    def __init__(self):
        print('your_name1')

# 列表(集合多对象)
obj_list = []
# 添加函数和类
obj_list.append(ask)
obj_list.append(Person)

for item in obj_list:
    print(item())

1.2.3、可以作为参数传递给函数,可以当作函数的返回值

# 函数
def ask(name='your_name'):
    print(name)
def decorator_func():
    print('dec start')
    return ask
# 类
class Person:
    def __init__(self):
        print('your_name1')

#赋值函数给一个变量
my_func = ask
my_func('peter')

# 列表(集合多对象)
obj_list = []
# 添加函数和类
obj_list.append(ask)
obj_list.append(Person)

for item in obj_list:
    print(item())

# 函数返回值可以是函数
my_ask = decorator_func()
my_ask('peter')

二、type、object和class的关系

a=1
b="abc"
print(type(1))
print(type(int))
print(type(b))
print(type(str))

class student:
    pass

class Mystudent(student):
    pass

stu =student()
print(type(stu))
print(type(student))

# 查看基类
print(int.__bases__)
print(str.__bases__)
# 以上基类都是object
print(student.__bases__)
print(Mystudent.__bases__)
# object是最顶层的类,在默认未继承任何父类的类都会继承object
print(type.__bases__)
print(object.__bases__)
# type的基类是object,object的基类是type
print(type(object))
#最后查看object的类型发现为空

type -> int -> 1

type -> class -> object

object是最顶层的类,在默认未继承任何父类的类都会继承object,type的基类是object,object的基类是type。

python高级编程和异步io并发编程——第一章

图中实线箭头代表继承自谁,虚线箭头代表是谁的实例化

三、python中常见的内置类型

3.1、对象的三个特征

身份id(),类型type(),值

a = 1 
print(id(a)) #打印其在内存中的地址
print(type(a)) 
print(a)

注意python中凡是值为None,或者取值为None的都指向同一个地址,也就是说None在全局中只有一个

3.2、python的数值类型

int、float、complex(复数)、bool(布尔值)

3.3、迭代类型

查看后续教程

3.4、序列类型

list、range、tuple、str、array、bytes、bytearray、memoryview(二进制序列)

3.5、映射类型(dict)

3.6、集合类型

set、frozenset(不可修改集合)

注:映射类型和集合类型在python中实现的原理相似,且都具有极高的性能

3.7、上下文管理(with语句

查看后续教程

3.8、其他类型

模块类型
class和实例
函数类型
方法类型
代码类型(代码本身也会被python解释器变为对象类型)
object对象
type类型
elipsis类型(省略号)
notimplemented类型

 

结尾:除了其他类型后续的教程都会深入理解以上所有类型,其他类型太过于复杂必须深入python源码才可以说得通

- THE END -

ldy

4月18日11:47

最后修改:2025年4月18日
1

共有 1 条评论

回复给 Liu, Deyong 点击这里取消回复。

  1. Liu, Deyong

    Liu, Deyong

    需要相关源代码可以在评论区告知我