关于python:Python核心编程笔记一Python中一切皆对象

36次阅读

共计 2266 个字符,预计需要花费 6 分钟才能阅读完成。

Python 中所有皆对象

本章节首先比照动态语言以及动静语言,而后介绍 python 中最底层也是面向对象最重要的几个概念 -object、type 和 class 之间的关系,以此来引出在 python 如何做到所有皆对象、随后列举 python 中的常见对象。

1.Python 中所有皆对象

Python 的面向对象更彻底,Java 和 C ++ 中根底类型并不是对象。在 Python 中,函数和类也是对象,属于 Python 的一等公民。对象 具备如下 4 个特色

  • 1. 赋值给一个变量
  • 2. 能够增加到汇合对象中
  • 3. 能够作为参数传递给函数
  • 4. 能够作为函数地返回值

上面从四个特色角度别离举例说明 函数和类也是对象

1.1 类和函数都能够赋值给一个变量

类能够赋值给一个变量

class Person:
    def __init__(self, name="lsg"):
        print(name)


if __name__ == '__main__':
    my_class = Person  # 类赋值给一个变量
    my_class()  # 输入 lsg,变量间接调用就能够实例化一个类,满足下面的特色 1,这里显然阐明类也是一个对象
    my_class("haha")  # 输入 haha

函数能够赋值给一个变量

def func_test(name='lsg'):
    print(name)


if __name__ == '__main__':
    my_func = func_test
    my_func("haha") # 输入 haha,对变量的操作就是对函数的操作,等效于对象的赋值,满足下面的特色 1,阐明函数是对象。

1.2 类和函数都能够增加到汇合中

class Person:
    def __init__(self, name="lsg"):
        print(name)


def func_test(name='lsg'):
    print(name)


if __name__ == '__main__':
    obj_list = [func_test, Person]
    print(obj_list) # 输入[<function func_test at 0x0000025856A2C1E0>, <class '__main__.Person'>]

1.3 类和函数都能够作为参数传递给函数

class Person:
    def __init__(self, name="lsg"):
        print(name)


def func_test(name='lsg'):
    print(name)


def print_type(obj):
    print(type(obj))


if __name__ == '__main__':
    print_type(func_test)
    print_type(Person)

输入如下

<class 'function'>
<class 'type'>

能够显著地看出类和函数都是对象

1.4 类和函数都能够作为函数地返回值

class Person:
    def __init__(self, name="lsg"):
        print(name)


def func_test(name='lsg'):
    print(name)


def decorator_func():
    print("pre function")
    return func_test


def decorator_class():
    print("pre class")
    return Person


if __name__ == '__main__':
    decorator_func()()  # 返回的右值作为函数能够间接调用
    decorator_class()()  # 返回的右值作为类能够间接实例化

2.type、object 和 class 的关系

代码举例如下,能够得出三者的关系是 type –> class –> obj

2.1 type –> int –> a

a = 1
print(type(a)) # <class 'int'>
print(type(int)) # <class 'type'>

2.2 type –> str –> b

b = 'abc'
print(type(b)) # <class 'str'>
print(type(str)) # <class 'type'>

2.3 type –> Student –> stu

class Student:
    pass

stu = Student()
print(type(stu)) # <class '__main__.Student'>
print(type(Student)) # <class 'type'>

2.4 type –> list –> c

c = [1, 2]
print(type(c)) # <class 'list'>
print(type(list)) # <class 'type'>

总结图:

3.Python 中常见的内置类型

对象的三个特色:身份、内存和值

  • 身份:在内存中的地址,能够用 id(变量) 函数来查看

  • 类型:任何变量都必须有类型

常见的内置类型如下

3.1 None:全局只有一个

如下代码,两个值为 None 的变量地址完全相同,可见 None 是全局惟一的

a = None
b = None
print(id(a))
print(id(b))
print(id(a) == id(b))

3.2 数值类型

  • int
  • float
  • complex(复数)
  • bool

3.3 迭代类型:iterator

3.4 序列类型

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

3.5 映射类型(dict)

3.6 汇合

  • set
  • frozenset

3.7 上下文治理类型(with)

3.8 其余

  • 模块类型
  • class 和实例
  • 函数类型
  • 办法类型
  • 代码类型
  • object 类型
  • type 类型
  • elipsis 类型
  • notimplemented 类型

正文完
 0