前面说了那么多python的魔法函数,那么具体的魔法函数都有哪些呢?我在这里详细的列举出来。总的来说分为两大类,数学运算和非数学运算,下面就分别列举:

数学运算

一元运算符:neg__(-)、__pos__(+)、__abs
二元运算符:lt(<)、 __le__ <= 、 __eq__ == 、 __ne__ != 、 __gt__ > 、 ge >=

算术运算符:add + 、 sub - 、 mul * 、 truediv / 、 floordiv // 、 mod % 、 divmod divmod() 、 pow ** 或 pow() 、 round round()

反向算术运算符:raddrsubrmulrtruedivrfloordivrmod
rdivmodrpow

增量赋值算术运算符:iaddisubimulitruedivifloordivimod
ipow

位运算符:invert ~ 、 lshift << 、 __rshift__ >> 、 and & 、 or | 、 xor ^

反向位运算符:rlshiftrrshiftrandrxorror

增量赋值位运算符:ilshiftirshiftiandixorior

非数学运算

字符串表示: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

注意:所有黑色函数名都是以双下划线开头,双下划线结尾!!!

最后需要说明的一点是,我们如果可以使用Python原生的数据类型:list,dict,set,tuple等,那么我们的运行速度就会很快,因为它原生的数据类型都是cpython,而不是jpython,这样由C语言编写的解释器运行速度非常快,使得我们的开发效率得到了提升。