1.Python一切皆对象
函数和类也是对象,属于Python的一等公民,体现在以下四点:1.赋值给一个变量
将函数赋值给一个变量,对这个变量的操作实际上就是对这个函数的操作
def say(name='superzjx'):
print(name)
my_func = say
my_func('superzjx')
class Person:
def __init__(self):
print('init')
my_class = Person
my_class()
2.可以添加到集合对象中
obj_list = []
obj_list.append(say)
obj_list.append(Person)
for item in obj_list:
print(item())
3.可以作为参数传递给函数
def print_type(item):
print(type(item))
obj_list = []
obj_list.append(say)
obj_list.append(Person)
for item in obj_list:
print_type(item)
4.可以当作函数的返回值
函数作为函数的返回值,在Python中是装饰器的实现原理
def decorator_func():
print('decorator start')
return say
my_dec = decorator_func()
my_dec('Hello world')
2.type、class和object的关系
1.type
type有两种用法:生成一个类、返回一个对象的类型
type生成int,int生成1 type->int->1
type生成str,str生成'abc' type->str->'abc'
总结就是 type->class->object
以下也是适用 type->class->object逻辑
所以说我们的类是由type这个类生成的一个类对象,平常熟悉的对象是由类对象创建的对象
因此,type和class的关系是 class是由type生成的2.object
type的基类是object,object是由type类生成,type和object形成一个环路
object的基类是个空
type是一切类的实例
一起对象皆继承object
type对象都是自身的实例(通过指针来实现)
3.Python中常见的内置类型
对象的三个特征:身份(id)、类型、值1.None(全局只有一个)
a 和 b 都指向Python解释器中唯一的None对象2.数值:int、float、complex(复数)、bool
3.迭代类型
4.序列类型:list、bytes,bytearray,memoryview(二进制)、range、tuple、str、array
5.映射类型:dict
6.集合类型:set、forzenset
7.上下文管理器:with
8.其他:模块类型、class类型、函数类型、方法类型、代码类型、object类型、type类型、ellipsis类型、notimplemented类型(不需要掌握)