Python 进阶学习笔记

Python 进阶学习笔记魔法函数

魔法函数是Python内置由双下划线开头和双下划线结尾的函数,如__getitem__, __iter__, __len__等

非数学运算

字符串表示
__repr__、__str__
集合、序列相关
__len__、__getitem__、__setitem__、__delitem__、__contains__
迭代相关
__iter__、__next__
可调用
__call__
with上下文管理器
__enter__、__exit__
数值转换
__abs__、__bool__、__int__、__float__、__hash__、__index__
元类相关
__new__、__init__
属性相关
__getattr__、 __setattr__、__getattribute__、setattribute__、__dir__
属性描述符
__get__、__set__、 __delete__
协程
__await__、__aiter__、__anext__、__aenter__、__aexit__

数学运算

一元运算符
__neg__(-)、__pos__(+)、__abs__
二元运算符
__lt__(<)、 __le__ <= 、 __eq__ == 、 __ne__ != 、 __gt__ > 、 __ge__ >=
算术运算符
__add__ + 、 __sub__ – 、 __mul__ * 、 __truediv__ / 、 __floordiv__ // 、 __
mod__ % 、 __divmod__ divmod() 、 __pow__ ** 或 pow() 、 __round__ round()
反向算术运算符
__radd__ 、 __rsub__ 、 __rmul__ 、 __rtruediv__ 、 __rfloordiv__ 、 __rmod__ 、
__rdivmod__ 、 __rpow__
增量赋值算术运算符
__iadd__ 、 __isub__ 、 __imul__ 、 __itruediv__ 、 __ifloordiv__ 、 __imod__ 、
__ipow__
位运算符
__invert__ ~ 、 __lshift__ << 、 __rshift__ >> 、 __and__ & 、 __or__ | 、 __
xor__ ^
反向位运算符
__rlshift__ 、 __rrshift__ 、 __rand__ 、 __rxor__ 、 __ror__
增量赋值位运算符
__ilshift__ 、 __irshift__ 、 __iand__ 、 __ixor__ 、 __ior__

类和实例属性的查找顺序

Python 2.2之前采取DFS深度优先,2.2引入BFS广度优先,2.3之后至今引入C3算法,查找顺序可通过A.__mro__来进行查看(MRO:Method Resolution Order)

super()函数的调用也是遵循MRO的调用顺序的

静态方法和类方法

私有属性:Python中没有private关键字,私有属性通过在变量名或方法名前加双下划__var_name, __method_name来实现

注:实际上把在实例调取时用_ClassName__var_name还是可以访问到该变量的

列出对象的属性:my_object.__dict__, dir(my_object),后者内容更加丰富,但不包含值

try…except…else..finally…语句中不论是否抛出了异常finally中的语句都会被执行(这有利于解决文件或数据库连接关闭的释放资源问题),并且当finally中有return语句时其它代码块中的return内容将不会被返回,因为在执行中return的内容会先被压入栈中,后进先出

上下文管理器

对象切片:[start:end:step]

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.