身份
身份可以理解成在内存中的地址,可以通过id()函数查看某一个对象的身份,因为对象是分配在内存中的。相当于指针指向对象
类型
int 、str等等
值
注:
函数不加括号赋值给变量,叫引用,两者地址相同。加了括号(成了调用)赋值给变量,那是将调用结果给变量,此时两者的地址是不同的
Python的类,带括号是实例化,不带括号是赋值。带括号的type是定义的类,不带括号type类型是type
实例
# Python中一切皆对象 a=1 b='abc' c=[] d=dict() e=(1,2,3) # 函数可以赋值给一个变量 def ask(name='sixkery'): print(name) def sing(name='ge'): print(name) class Person(): def __init__(self): print("sixkery1") def decorator_fubc(): # 装饰器的原理就来自这里的 print('dec start') return ask if __name__=="__main__": my_func = ask # 函数赋给变量 my_func() # 把函数当变量来使用 si=sing() p=Person() de=decorator_fubc() de() de1=decorator_fubc print("类型:{},地址:{}".format(type(a),id(a))) print("类型:{},地址:{}".format(type(b), id(b))) print("类型:{},地址:{}".format(type(c), id(c))) print("类型:{},地址:{}".format(type(d), id(d))) print("类型:{},地址:{}".format(type(e), id(e))) print("my_func类型:{},地址:{}".format(type(my_func), id(my_func))) print("ask函数的类型:{},地址:{}".format(type(ask), id(ask))) print("p的类型:{},地址:{}".format(type(p), id(p))) print("Person类的类型:{},地址:{}".format(type(Person), id(Person))) print("类型:{},地址:{}".format(type(de), id(de))) print("类型:{},地址:{}".format(type(de1), id(de1))) print("类型:{},地址:{}".format(type(si), id(si))) print("int类型:{},地址:{}".format(type(int), id(int))) # 结果为: sixkery ge sixkery1 dec start sixkery 类型:<class 'int'>,地址:4366494000 类型:<class 'str'>,地址:4367454448 类型:<class 'list'>,地址:4374146304 类型:<class 'dict'>,地址:4374199616 类型:<class 'tuple'>,地址:4374064576 my_func类型:<class 'function'>,地址:4367085776 ask函数的类型:<class 'function'>,地址:4367085776 p的类型:<class '__main__.Person'>,地址:4374216608 Person类的类型:<class 'type'>,地址:4964107424 类型:<class 'function'>,地址:4367085776 类型:<class 'function'>,地址:4374194064 类型:<class 'NoneType'>,地址:4372481136 int类型:<class 'type'>,地址:4383786008