Python核心基础(一):对象,内置类型

前言:在Python当中,一切皆对象


1. 在Python当中,一切皆对象。

类和函数也都是对象,是Python的一等公民。

一等公民具备的特征如下:

  1. 可以赋值给一个变量。
  2. 可以添加到集合当中
  3. 可以作为参数传递给函数
  4. 可以作为函数的返回值
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. 对象的三个特征:

  1. 身份:对象在内存当中的地址,可以通过id(obj)函数来查看对象的内存地址。
  2. 类型:比如说1是int类型。
  3. 值: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类对象
经验分享 程序员 微信小程序 职场和发展