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 […]

dict defaultdict OrderedDict
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 ∩ Z s & z s.__and__(z) s 和 z 的交集
Intersection of s and z
S ∩ Z z & s s.__rand__(z) 反向 & 操作
Reversed & operator
S ∩ Z z & s s.intersection(it, ...) 把可迭代的 it 和其他所有参数转化为集合,然后求它们与 s 的交集
Intersection of s and all sets built from iterables it, etc.
S ∩ Z s &= z s.__iand__(z) 把 s 更新为 s 和 z 的交集
s updated with intersection of s and z
S ∩ Z s &= z s.intersection_update(it, ...) 把可迭代的 it 和其他所有参数转化为集合,然后求得它们与 s 的交集,然后把 s 更新成这个交集
s updated with intersection of s and all sets built from
S ∪ Z s | z s.__or__(z) s 和 z 的并集
Union of s and z
S ∪ Z z | s s.__ror__(z) | 的反向操作
Reversed |
S ∪ Z z | s s.union(it, ...) 把可迭代的 it 和其他所有参数转化为集合,然后求它们和 s 的并集
Union of s and all sets built from iterables it, etc.
S ∪ Z s |= z s.__ior__(z) 把 s 更新为 s 和 z 的并集
s updated with union of s and z
S ∪ Z s |= z s.update(it, ...) 把可迭代的 it 和其他所有参数转化为集合,然后求它们和 s 的并集,并把 s 更新成这个并集
s updated with union of s and all sets built from iterables it, etc.
S \ Z s - z s.__sub__(z) s 和 z 的差集,或者叫作相对补集
Relative complement or difference between s and z
S \ Z z - s s.__rsub__(z) s.__sub__(z) 的反向操作
Reversed - operator
S \ Z z - s s.difference(it, ...) 把可迭代的 it 和其他所有参数转化为集合,然后求它们和 s 的差集
Difference between s and all sets built from iterables it, etc.
S \ Z s -= z s.__isub__(z) 把 s 更新为它与 z 的差集
s updated with difference between s and z
S \ Z s -= z s.difference_update(it, ...) 把可迭代的 it 和其他所有参数转化为集合,求它们和 s 的差集,然后把 s 更新成这个差集
s updated with difference between s and all sets built from iterables it, etc.
S \ Z s -= z s.symmetric_difference(it) 求 s 和 set(it) 的对称差集
Complement of s & set(it)
S △ Z s ^ z s.__xor__(z) 求 s 和 z 的对称差集
Symmetric difference (the complement of the intersections & z)
S △ Z z ^ s s.__rxor__(z) ^ 的反向操作
Reversed ^ operator
S △ Z z ^ s s.symmetric_difference_update(it,...) 把可迭代的 it 和其他所有参数转化为集合,然后求它们和 s 的对称差集,最后把 s 更新成该结果
s updated with symmetric difference of s and all sets built from iterables it, etc.
S △ Z s ^= z s.__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 ∈ S e in s s.__contains__(e) 元素 e 是否属于 s
Element e is a member of s
S ⊆ Z s <= z s.__le__(z) 是否为 z 的子集
s is a subset of the z set
S ⊆ Z s <= z s.issubset(it) 把可迭代的 it 转化为集合,然后查看 s 是否为它的子集
s is a subset of the set built from the iterable it
S ⊂ Z s < z s.__lt__(z) s 是否为 z 的真子集
s is a proper subset of the z set
S ⊇ Z s >= z s.__ge__(z) s 是否为 z 的父集
s is a superset of the z set
S ⊇ Z s >= z s.issuperset(it) 把可迭代的 it 转化为集合,然后查看 s 是否为它的父集
s is a superset of the set built from the iterable it
S ⊃ Z s > z s.__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
发布了4 篇原创文章 · 获赞 2 · 访问量 256

猜你喜欢

转载自blog.csdn.net/Varalpha/article/details/104394049