Python核心基础(一):对象,内置类型
前言:在Python当中,一切皆对象
1. 在Python当中,一切皆对象。
类和函数也都是对象,是Python的一等公民。
一等公民具备的特征如下:
- 可以赋值给一个变量。
- 可以添加到集合当中
- 可以作为参数传递给函数
- 可以作为函数的返回值
def ask(name="body"): print(name) class Person: def __init__(self): print("body1") def decorator_func(): print("dec start") return ask my_ask = decorator_func() my_ask("tom") obj_list = [] obj_list.append(ask) obj_list.append(Person) for item in obj_list: print(item()) my_func = ask my_func() my_person = Person my_person()
输出:
E:anacondapython.exe "E:/PyCharm 2017.3.7/workspace/sample/chapter01/all_is_object.py" dec start tom body None body1 <__main__.Person object at 0x0000018F5E866780> body body1 Process finished with exit code 0
2. type,object和class的关系
先来看如下关系:
从上图中可以看出:type->int->1; type->class->obj
再来看看object对象:
在类没有继承一个基类的时候,会默认继承object类。object是最顶层基类,所有的类推导到最后都会集成object。
那么问题来了,type也是一个类,同时它也是一个对象,那么type和object是什么关系?
所以,一个很有意思的结论是:object是type的一个实例,而type又是继承自object。
总结如下图:
3. Python当中的内置类型
1. 对象的三个特征:
- 身份:对象在内存当中的地址,可以通过id(obj)函数来查看对象的内存地址。
- 类型:比如说1是int类型。
- 值:a=1 1就是a对象的值。
2. Python当中的内置类型
-
None: 全局里只有一个。a = None b = None a==b 值为True 数值:int/float/complex/bool 迭代类型:最著名的就是Python的迭代器了 序列类型:list/(bytes,bytearray,memoryview(二进制序列))/range/tuple/str/array 映射类型:dict 集合:set/frozenset 上下文管理类型:with 其它:模块/class和实例/函数类型/方法类型/代码类型/object对象/type类型/ellipsis类型/notimplemented类对象