开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情
一,python如何进阶
- 和大神一起
- 阅读优秀源码
- 面试,多做项目
- 应对 python 高级工程师面试
- 从深度和广度都扩充自己的只是体系
- 能应对各种难度的框架和库的源码
- 深入理解 python 的设计理念和背后的原理
asyncyio 可以让我们开发出媲美 go ,nodejs高并发的服务器
二,python一切皆对象
python 中的面向对象是最彻底的面向对象
函数和类也是对象,属于python一等共鸣
- 赋值给一个变量
- 可以添加到集合对象中
- 可以作为参数传递给函数
- 可以当作函数的返回值
三,type,object,和class的关系
type:python中一切皆对象的根源,一种用法是返回一个对象的数据类型,另一种是生成类
>>> a = 1 ①
>>> type(a) ②
<class 'int'>
>>> type(int)
<class 'type'>
>>> b = 'a'
>>> type(b)
<class 'str'>
>>> type(str)
<class 'type'>
>>> l = [1, 2, 3]
>>> type(l)
<class 'list'>
>>> type(list)
<class 'type'>
① 内存中创建一个变量a,存放数值1的地址
② 查看数值类型,发现 1 是由 int类 实例的对象
③ 查看 int类 的数据类型,发现 int类 是由 type类 实例的对象
由此可推断
>>> class Student:
... pass
...
>>> stu = Student() # stu 是 Student 类的实例
>>> type(stu)
<class '__main__.Student'>
>>> Student.__bases__
(<class 'object'>,) # 默认继承 object 类
>>> class MyStudent(Student):
... pass
...
>>> MyStudent.__bases__
(<class '__main__.Student'>,)
>>> type.__bases__ # type 的父类是 object
(<class 'object'>,)
>>> type(object) # 我们又发现 object 是居然又是 type 的实例!!!
<class 'type'>
>>> object.__bases__ # object的基类为空
()
>>> s = type
>>> s
<class 'type'>
>>> dir(s)
['__abstractmethods__', '__base__', '__bases__', '__basicsize__', '__call__', '__class_
_', '__delattr__', '__dict__', '__dictoffset__', '__dir__', '__doc__', '__eq__', '__fla
gs__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '_
_init_subclass__', '__instancecheck__', '__itemsize__', '__le__', '__lt__', '__module__
', '__mro__', '__name__', '__ne__', '__new__', '__prepare__', '__qualname__', '__reduce
__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclassch
eck__', '__subclasses__', '__subclasshook__', '__text_signature__', '__weakrefoffset__'
, 'mro']
① python 中一切皆对象,是因为所有的类,函数,数据类型都是 type 的的实例,因为是实例,可以随时修改,进行赋值等等操作,甚至连 type 自己都把自己实例成自己的对象(通过指针)
② object 是 type 的实例,type 实例化自己(通过指针实现),并且继承 object,又因为所有类都默认继承 object 类,所有是任何类的基类,换句话说,python 中所有的对象都是 type 的实例
③ 因为所有的实例都是对象,能够被修改,能够被赋值给别的变量,所以 python 中的一切皆对象是最彻底的
三,python中的常见内置类型
>>> a = 1
>>> id(a)
1626833008
对象的三个特征:1. 身份(id函数查看) 2. 类型(int, str..) 3. 值(通常是指针指向一个内存地址) 1
-
None全局只有一个>>> a = None >>> b = None >>> id(a), id(b) (1626373424, 1626373424) -
数值类型
-
迭代类型
-
序列类型
-
映射类型
-
集合
- 可修改集合(set)
- 不可修改集合(frozenset)
-
上下文管理类型
-
其他
set 和 dict 的效率,性能非常高,用 in 做判断最好用 in {}