Python 中英特殊方法表 Special method

摘录来源 source:

  • Data Model
  • Book: Fluent Python 流畅的Python 前两章

Python 的特殊方法

表1-1:

跟运算符无关的特殊方法
Special method names (operators excluded)

类别Category方法名(Method names)
字符串 / 字节序列表示形式String/bytes representation__repr__
__str__
__format__
__bytes__
数值转换Conversion to number__abs__
__bool__
__complex__
__int__
__float__
__hash__
__index__
集合模拟Emulating collections__len__
__getitem__
__setitem__
__delitem__
__contains__
迭代枚举Iteration__iter__
__reversed__
__next__
可调用模拟Emulating callables__call__
上下文管理Context management__enter__
__exit__
实例创建和销毁Instance creation and destruction__new__
__init__
__del__
属性管理Attribute management__getattr__
__getattribute__
__setattr__
__delattr__
__dir__
属性描述符Attribute descriptors__get__
__set__
__delete__
跟类相关的服务Class services__prepare__
__instancecheck__
__subclasscheck__

表1-2:

跟运算符相关的特殊方法
Special method names for operators

类别Category方法名和对应的运算符(Method names and related operators)
一元运算符Unary numeric operators__neg__-
__pos__+
__abs__abs()
众多比较运算符Rich comparison operators__lt__<
__le__<=
__eq__==
__ne__!=
__gt__>
__ge__>=
算术运算符Arithmetic operators__add__+
__sub__-
__mul__*
__truediv__/
__floordiv__//
__mod__%
__divmod__divmod()
__pow__**
__round__round()
反向算术运算符Reversed arithmetic operators__radd__
__rsub__
__rmul__
__rtruediv__
__rfloordiv__
__rmod__
__rdivmod__
__rpow__
增量赋值算术运算符Augmented assignment arithmetic operators__iadd__
__isub__
__imul__
__itruediv__
__ifloordiv__
__imod__
__ipow__
位运算符Bitwise operators__invert__~
__lshift__<<
__rshift__>>
__and__&
__or__|
__xor__^
反向位运算符Reversed bitwise operators__rlshift__
__rrshift__
__rand__
__rxor__
__ror__
增量赋值位运算符ugmented assignment bitwise operators__ilshift__
__irshift__
__iand__
__ixor__
__ior__

列表或元组或元组或双向队列的方法和属性

表2-1

列表或元组或元组或双向队列的方法和属性(那些由object类支持的方法没有列出来)

Methods and attributes found in list or tuple or array or deque (methods implemented by object are omitted for brevity)

列表
list
元组
tuple
数组
array
双向队列
deque
s.__add__(s2)s + s2 → 拼接
concatenation
s.__iadd__(s2)s += s2 → 就地拼接
in-place concatenation
s.append(e)在尾部添加一个新元素
Append one element after last
s.clear()删除所有元素
Delete all items
s.__contains__(e)s 是否包含 e
e in s
s.copy()列表的浅复制
Shallow copy of the list
s.count(e)e 在 s 中出现的次数
Count occurrences of an element
s.__delitem__(p)把位于 p 的元素删除
Remove item at position p
s.extend(i)将可迭代对象 i 中的元素添加到尾部
Append items from iterable i to the right
s.__getitem__(p)s[p] → 获取位置 p 的元素
get item at position
s.__getnewargs__()在 pickle 中支持更加优化的序列化
Support for optimized serialization with pickle
s.index(e)在 s 中找到元素 e 第一次出现的位置
Find position of first occurrence of e
s.insert(p, e)在位置 p 之前插入元素e
Insert element e before the item at position p
s.__iter__()获取 s 的迭代器
Get iterator
s.__len__()len(s) → 元素的数量
number of items
s.__mul__(n)s * n → n 个 s 的重复拼接
repeated concatenation
s.__imul__(n)s *= n → 就地重复拼接
in-place repeated concatenation
s.__rmul__(n)n * s → 反向拼接 *
reversed repeated concatenationa
s.pop([p])删除最后或者是(可选的)位于 p 的元素 → 并返回它的值
Remove and return last item or item at optional position p
s.remove(e)删除 s 中的第一次出现的 e
Remove first occurrence of element e by value
s.reverse()就地把 s 的元素倒序排列
Reverse the order of the items in place
s.__reversed__()返回 s 的倒序迭代器
Get iterator to scan items from last to first
s.__setitem__(p, e)s[p] = e → 把元素 e 放在位置p 替代已经在那个位置的元素
put e in position p, overwriting existing item
s.sort([key], [reverse])就地对 s 中的元素进行排序 可选的参数有键(key)和是否倒序(reverse)
Sort items in place with optional keyword arguments key and reverse
s.byteswap()翻转数组内每个元素的字节序列 转换字节序
Swap bytes of all items in array for endianess conversion
s.__copy__()对 copy.copy 的支持
Support for copy.copy
s.__deepcopy__()对 copy.deepcopy 的支持
Optimized support for copy.deepcopy
s.frombytes(b)将压缩成机器值的字节序列读出来添加到尾部
Append items from byte sequence interpreted as packed machine values
s.fromfile(f, n)将二进制文件 f 内含有机器值读出来添加到尾部 最多添加 n 项
Append n items from binary file f interpreted as packed machine values
s.fromlist(l)将列表里的元素添加到尾部 如果其中任何一个元素导致了 TypeError 异常 那么所有的添加都会取消
Append items from list; if one causes TypeError, none are appended
s.itemsize数组中每个元素的长度是几个字节
Length in bytes of each array item
s.tobytes()把所有元素的机器值用 bytes 对象的形式返回
Return items as packed machine values in a bytes object
s.tofile(f)把所有元素以机器值的形式写入一个文件
Save items as packed machine values to binary file f
s.tolist()把数组转换成列表 列表里的元素类型是数字对象
Return items as numeric objects in a list
s.typecode返回只有一个字符的字符串 代表数组元素在 C 语言中的类型
One-character string identifying the C type of the items
s.appendleft(e)添加一个元素到最左侧(到第一个元素之前)
Append one element to the left (before first)
s.extendleft(i)将可迭代对象 i 中的元素添加到头部
Append items from iterable i to the left
s.pop()移除最后一个元素并返回它的值#
Remove and return last itemb
s.popleft()移除第一个元素并返回它的值
Remove and return first item
s.rotate(n)把 n 个元素从队列的一端移到另一端
Move n items from one end to the other

字典与集合的方法和属性

表3-1

dict、collections.defaultdict和collections.OrderedDict这三种映射类型的方法列表(依然省略了继承自object的常见方法);可选参数以[…]表示

Methods of the mapping types dict, collections.defaultdict, and collections. OrderedDict (common object methods omitted for brevity); optional arguments are enclosed in […]

dictdefaultdictOrderedDict
d.clear()移除所有元素
Remove all items
d.__contains__(k)检查 k 是否在 d 中
k in d
d.copy()浅复制
Shallow copy
d.__copy__()用于支持 copy.copy
Support for copy.copy
d.default_factory__missing__ 函数中被调用的函数,用以给未找到的 元素设置值*
Callable invoked by __missing__ to set missing valuesa
d.__delitem__(k)del d[k],移除键为 k 的元素
del d[k]—remove item with key k
d.fromkeys(it, [initial])将迭代器 it 里的元素设置为映射里的键,如果有 initial 参数,就把它作为这些键对应的值(默认是 None)
New mapping from keys in iterable, with optional initial value (defaults to None)
d.get(k, [default])返回键 k 对应的值,如果字典里没有键 k,则返回 None 或者 default
Get item with key k, return default or None if missing
d.__getitem__(k)让字典 d 能用 d[k] 的形式返回键 k 对应的值
d[k] —get item with key k
d.items()返回 d 里所有的键值对
Get view over items (key, value) pairs
d.__iter__()获取键的迭代器
Get iterator over keys
d.keys()获取所有的键
Get view over keys
d.__len__()可以用 len(d) 的形式得到字典里键值对的数量
len(d)—number of items
d.__missing__(k)__getitem__ 找不到对应键的时候,这个方法会被调用
Called when __getitem__ cannot find the key
d.move_to_end(k, [last])把键为 k 的元素移动到最靠前或者最靠后的位置(last 的默认值是 True)
Move k first or last position (last is True by default)
d.pop(k, [default])返回键 k 所对应的值,然后移除这个键值对。如果没有这个键,返回 None 或者 defaul
Remove and return value at k, or default or None if missing
d.popitem()随机返回一个键值对并从字典里移除它#
Remove and return an arbitrary (key, value) itemb
d.__reversed__()返回倒序的键的迭代器
Get iterator for keys from last to first inserted
d.setdefault(k, [default])若字典里有键k,则把它对应的值设置为 default,然后返回这个值;若无,则让 d[k] = default,然后返回 default
If k in d, return d[k]; else set d[k] = default and return it
d.__setitem__(k, v)实现 d[k] = v 操作,把 k 对应的值设为 v
put v at k
d.update(m, [**kargs])m 可以是映射或者键值对迭代器,用来更新 d 里对应的条目
Update d with items from mapping or iterable of (key, value) pairs
d.values()返回字典里的所有值
Get view over values

表3-2

集合的数学运算:这些方法或者会生成新集合,或者会在条件允许的情况下就地修改集合

Mathematical set operations: these methods either produce a new set or update the target set in place, if it’s mutable

数学符号
Math_symbol
Python
Python_operator
运算符
Method
方法描述
Description
S ∩ Zs & zs.__and__(z)s 和 z 的交集
Intersection of s and z
S ∩ Zz & ss.__rand__(z)反向 & 操作
Reversed & operator
S ∩ Zz & ss.intersection(it, ...)把可迭代的 it 和其他所有参数转化为集合,然后求它们与 s 的交集
Intersection of s and all sets built from iterables it, etc.
S ∩ Zs &= zs.__iand__(z)把 s 更新为 s 和 z 的交集
s updated with intersection of s and z
S ∩ Zs &= zs.intersection_update(it, ...)把可迭代的 it 和其他所有参数转化为集合,然后求得它们与 s 的交集,然后把 s 更新成这个交集
s updated with intersection of s and all sets built from
S ∪ Zs | zs.__or__(z)s 和 z 的并集
Union of s and z
S ∪ Zz | ss.__ror__(z)| 的反向操作
Reversed |
S ∪ Zz | ss.union(it, ...)把可迭代的 it 和其他所有参数转化为集合,然后求它们和 s 的并集
Union of s and all sets built from iterables it, etc.
S ∪ Zs |= zs.__ior__(z)把 s 更新为 s 和 z 的并集
s updated with union of s and z
S ∪ Zs |= zs.update(it, ...)把可迭代的 it 和其他所有参数转化为集合,然后求它们和 s 的并集,并把 s 更新成这个并集
s updated with union of s and all sets built from iterables it, etc.
S \ Zs - zs.__sub__(z)s 和 z 的差集,或者叫作相对补集
Relative complement or difference between s and z
S \ Zz - ss.__rsub__(z)s.__sub__(z) 的反向操作
Reversed - operator
S \ Zz - ss.difference(it, ...)把可迭代的 it 和其他所有参数转化为集合,然后求它们和 s 的差集
Difference between s and all sets built from iterables it, etc.
S \ Zs -= zs.__isub__(z)把 s 更新为它与 z 的差集
s updated with difference between s and z
S \ Zs -= zs.difference_update(it, ...)把可迭代的 it 和其他所有参数转化为集合,求它们和 s 的差集,然后把 s 更新成这个差集
s updated with difference between s and all sets built from iterables it, etc.
S \ Zs -= zs.symmetric_difference(it)求 s 和 set(it) 的对称差集
Complement of s & set(it)
S △ Zs ^ zs.__xor__(z)求 s 和 z 的对称差集
Symmetric difference (the complement of the intersections & z)
S △ Zz ^ ss.__rxor__(z)^ 的反向操作
Reversed ^ operator
S △ Zz ^ ss.symmetric_difference_update(it,...)把可迭代的 it 和其他所有参数转化为集合,然后求它们和 s 的对称差集,最后把 s 更新成该结果
s updated with symmetric difference of s and all sets built from iterables it, etc.
S △ Zs ^= zs.__ixor__(z)把 s 更新成它与 z 的对称差集
s updated with symmetric difference of s and z

表3-3

集合的比较运算符,返回值是布尔类型

Set comparison operators and methods that return a bool

数学符号
Math_symbol
Python运算符
Python_operator
方法
Method
描述
Description
s.isdisjoint(z)查看 s 和 z 是否不相交(没有共同元素)
s and z are disjoint (have no elements in common)
e ∈ Se in ss.__contains__(e)元素 e 是否属于 s
Element e is a member of s
S ⊆ Zs <= zs.__le__(z)是否为 z 的子集
s is a subset of the z set
S ⊆ Zs <= zs.issubset(it)把可迭代的 it 转化为集合,然后查看 s 是否为它的子集
s is a subset of the set built from the iterable it
S ⊂ Zs < zs.__lt__(z)s 是否为 z 的真子集
s is a proper subset of the z set
S ⊇ Zs >= zs.__ge__(z)s 是否为 z 的父集
s is a superset of the z set
S ⊇ Zs >= zs.issuperset(it)把可迭代的 it 转化为集合,然后查看 s 是否为它的父集
s is a superset of the set built from the iterable it
S ⊃ Zs > zs.__gt__(z)s 是否为 z 的真父集
s is a proper superset of the z set

表3-4

集合类型的其他方法

Additional set methods

set
set
frozenset
frozenset
s.add(e)把元素 e 添加到 s 中
Add element e to s
s.clear()移除掉 s 中的所有元素
Remove all elements of s
s.copy()对 s 浅复制
Shallow copy of s
s.discard(e)如果 s 里有 e 这个元素的话,把它移除
Remove element e from s if it is present
s.__iter__()返回 s 的迭代器
Get iterator over s
s.__len__()len(s)
s.pop()从 s 中移除一个元素并返回它的值,若 s 为空,则抛出 KeyError 异常
Remove and return an element from s, raising KeyError if s is empty
s.remove(e)从 s 中移除 e 元素,若 e 元素不存在,则抛出 KeyError 异常
Remove element e from s, raising KeyError if e not in s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值