python标准库内置函数
- 内置函数
-
- abs(x)
- aiter(async_iterable)
- all(iterable)
- awaitable anext(async_iterator[, default])
- any(iterable)
- ascii(object)
- bin(x)
- class bool([x])
- breakpoint(*args, **kws)
- class bytearray([source[, encoding[, errors]]])
- class bytes([source[, encoding[, errors]]])
- callable(object)
- chr(i)
- @classmethod
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=- 1)
- class complex([real[, imag]])
- delattr(object, name)
- dir([object])
- divmod(a, b)
- enumerate(iterable, start=0)
- eval(expression[, globals[, locals]])
- exec(object[, globals[, locals]])
- filter(function, iterable)
- class float([x])
- format(value[, format_spec])
- class frozenset([iterable])
- getattr(object, name[, default])
- globals()
- hasattr(object, name)
- hash(object)
- help([object])
- hex(x)
- id(object)
- input([prompt])
- class int([x])
- class int(x, base=10)
- isinstance(object, classinfo)
- issubclass(class, classinfo)
- iter(object[, sentinel])
- len(s)
- class list([iterable])
- locals()
- map(function, iterable, ...)
- max(iterable, *[, key, default])
- max(arg1, arg2, *args[, key])
- class memoryview(object)
- min(iterable, *[, key, default])
- min(arg1, arg2, *args[, key])
- next(iterator[, default])
- oct(x)
- open(file, mode='r', buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- ord(c)
- pow(base, exp[, mod])
- print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- class property(fget=None, fset=None, fdel=None, doc=None)
- class range(stop)
- class range(start, stop[, step])
- repr(object)
- reversed(seq)
- round(number[, ndigits])
- class set([iterable])
- setattr(object, name, value)
- class slice(stop)
- class slice(start, stop[, step])
- sorted(iterable, /, *, key=None, reverse=False)
- @staticmethod
- class str(object='')
- class str(object=b'', encoding='utf-8', errors='strict')
- sum(iterable, /, start=0)
- class super([type[, object-or-type]])
- class tuple([iterable])
- class type(object)
- class type(name, bases, dict, **kwds)
- vars([object])
- zip(*iterables, strict=False)
- __import__(name, globals=None, locals=None, fromlist=(), level=0)
内置函数
Python 解释器内置了很多函数和类型,任何时候都能使用。以下按字母顺序给出列表。
abs(x)
返回一个数的绝对值。 参数可以是整数、浮点数或任何实现了 abs() 的对象。 如果参数是一个复数,则返回它的模。
aiter(async_iterable)
返回 asynchronous iterable 的 asynchronous iterator 。相当于调用 x.aiter()。
注意:与 iter() 不同,aiter() 没有两个参数的版本。
3.10 新版功能.
all(iterable)
如果 iterable 的所有元素均为真值(或可迭代对象为空)则返回 True 。 等价于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
awaitable anext(async_iterator[, default])
当进入 await 状态时,从给定 asynchronous iterator 返回下一数据项,迭代完毕则返回 default。
这是内置函数 next() 的异步版本,类似于:
调用 async_iterator 的 anext() 方法,返回一个 awaitable。等待返回迭代器的下一个值。若有给出 default,则在迭代完毕后会返回给出的值,否则会触发 StopAsyncIteration。
3.10 新版功能.
any(iterable)
如果 iterable 的任一元素为真值则返回 True。 如果可迭代对象为空,返回 False。 等价于:
def any(iterable):
for element in iterable:
if element:
return True
return False
ascii(object)
与 repr() 类似,返回一个字符串,表示对象的可打印形式,但在 repr() 返回的字符串中,非 ASCII 字符会用 \x、\u 和 \U 进行转义。生成的字符串类似于 Python 2 中 repr() 的返回结果。
bin(x)
将整数转变为以“0b”前缀的二进制字符串。结果是一个合法的 Python 表达式。如果 x 不是 Python 的 int 对象,它必须定义 index() 方法,以便返回整数值。下面是一些例子:
>>>
bin(3)
'0b11'
bin(-10)
'-0b1010'
若要控制是否显示前缀“0b”,可以采用以下两种方案:
>>>
format(14, '#b'), format(14, 'b')
('0b1110', '1110')
f'{14:#b}', f'{14:b}'
('0b1110', '1110')
另见 format() 获取更多信息。
class bool([x])
返回布尔值,True 或 False。x 用标准的 真值测试过程 进行转换。如果 x 为 False 或省略,则返回 False;否则返回 True。 bool 类是 int 的子类(见 数字类型 — int, float, complex )。它不能再被继承。它唯一的实例就是 False 和 True (参阅 布尔值 )。
在 3.7 版更改: x 现在只能作为位置参数。
breakpoint(*args, **kws)
此函数会在调用时将你陷入调试器中。具体来说,它调用 sys.breakpointhook() ,直接传递 args 和 kws 。默认情况下, sys.breakpointhook() 调用 pdb.set_trace() 且没有参数。在这种情况下,它纯粹是一个便利函数,因此您不必显式导入 pdb 且键入尽可能少的代码即可进入调试器。但是, sys.breakpointhook() 可以设置为其他一些函数并被 breakpoint() 自动调用,以允许进入你想用的调试器。
引发一个 审计事件 builtins.breakpoint 并附带参数 breakpointhook。
3.7 新版功能.
class bytearray([source[, encoding[, errors]]])
返回一个新的 bytes 数组。 bytearray 类是一个可变序列,包含范围为 0 <= x < 256 的整数。它有可变序列大部分常见的方法,见 可变序列类型 的描述;同时有 bytes 类型的大部分方法,参见 bytes 和 bytearray 操作。
可选形参 source 可以用不同的方式来初始化数组:
如果是一个 string,您必须提供 encoding 参数(errors 参数仍是可选的);bytearray() 会使用 str.encode() 方法来将 string 转变成 bytes。
如果是一个 integer,会初始化大小为该数字的数组,并使用 null 字节填充。
如果是一个遵循 缓冲区接口 的对象,该对象的只读缓冲区将被用来初始化字节数组。
如果是一个 iterable 可迭代对象,它的元素的范围必须是 0 <= x < 256 的整数,它会被用作数组的初始内容。
如果没有实参,则创建大小为 0 的数组。
另见 二进制序列类型 — bytes, bytearray, memoryview 和 bytearray 对象。
class bytes([source[, encoding[, errors]]])
返回一个新的“bytes”对象,这是一个不可变序列,包含范围为 0 <= x < 256 的整数。bytes 是 bytearray 的不可变版本——带有同样不改变序列的方法,支持同样的索引、切片操作。
因此,构造函数的实参和 bytearray() 相同。
字节对象还可以用字面值创建,参见 字符串与字节串字面值。
另见 二进制序列类型 — bytes, bytearray, memoryview,bytes 对象 和 bytes 和 bytearray 操作。
callable(object)
如果参数 object 是可调用的就返回 True,否则返回 False。 如果返回 True,调用仍可能失败,但如果返回 False,则调用 object 将肯定不会成功。 请注意类是可调用的(调用类将返回一个新的实例);如果实例所属的类有 call() 则它就是可调用的。
3.2 新版功能: 这个函数一开始在 Python 3.0 被移除了,但在 Python 3.2 被重新加入。
chr(i)
返回 Unicode 码位为整数 i 的字符的字符串格式。例如,chr(97) 返回字符串 ‘a’,chr(8364) 返回字符串 ‘€’。这是 ord() 的逆函数。
实参的合法范围是 0 到 1,114,111(16 进制表示是 0x10FFFF)。如果 i 超过这个范围,会触发 ValueError 异常。
@classmethod
把一个方法封装成类方法。
类方法隐含的第一个参数就是类,就像实例方法接收实例作为参数一样。要声明一个类方法,按惯例请使用以下方案:
class C:
@classmethod
def f(cls, arg1, arg2): ...
@classmethod 这样的形式称为函数的 decorator – 详情参阅 函数定义。
类方法的调用可以在类上进行 (例如 C.f()) 也可以在实例上进行 (例如 C().f())。 其所属类以外的类实例会被忽略。 如果类方法在其所属类的派生类上调用,则该派生类对象会被作为隐含的第一个参数被传入。
类方法与 C++ 或 Java 中的静态方法不同。 如果你需要后者,请参阅本节中的 staticmethod()。 有关类方法的更多信息,请参阅 标准类型层级结构。
在 3.9 版更改: 类方法现在可以包装其他 描述器 例如 property()。
在 3.10 版更改: 类方法现在继承了方法的属性(module、name、qualname、doc 和 annotations),并拥有一个新的__wrapped__
属性。
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=- 1)
将 source 编译成代码或 AST 对象。代码对象可以被 exec() 或 eval() 执行。source 可以是常规的字符串、字节字符串,或者 AST 对象。参见 ast 模块的文档了解如何使用 AST 对象。
filename 实参需要是代码读取的文件名;如果代码不需要从文件中读取,可以传入一些可辨识的值(经常会使用 ‘’)。
mode 实参指定了编译代码必须用的模式。如果 source 是语句序列,可以是 ‘exec’;如果是单一表达式,可以是 ‘eval’;如果是单个交互式语句,可以是 ‘single’。(在最后一种情况下,如果表达式执行结果不是 None 将会被打印出来。)
可选参数 flags 和 dont_inherit 控制应当激活哪个 编译器选项 以及应当允许哪个 future 特性。 如果两者都未提供 (或都为零) 则代码会应用与调用 compile() 的代码相同的旗标来编译。 如果给出了 flags 参数而未给出 dont_inherit (或者为零) 则会在无论如何都将被使用的旗标之外还会额外使用 flags 参数所指定的编译器选项和 future 语句。 如果 dont_inherit 为非零整数,则只使用 flags 参数 – 外围代码中的旗标 (future 特性和编译器选项) 会被忽略。
编译器选项和 future 语句是由比特位来指明的。 比特位可以通过一起按位 OR 来指明多个选项。 指明特定 future 特性所需的比特位可以在 future 模块的 Feature 实例的 compiler_flag 属性中找到。 编译器旗标 可以在 ast 模块中查找带有 PyCF 前缀的名称。
optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级别为 0 (没有优化;debug 为真)、1 (断言被删除, debug 为假)或 2 (文档字符串也被删除)。
如果编译的源码不合法,此函数会触发 SyntaxError 异常;如果源码包含 null 字节,则会触发 ValueError 异常。
如果您想分析 Python 代码的 AST 表示,请参阅 ast.parse()。
引发一个 审计事件 compile 附带参数 source, filename。
注解 在 ‘single’ 或 ‘eval’ 模式编译多行代码字符串时,输入必须以至少一个换行符结尾。 这使 code 模块更容易检测语句的完整性。
警告 在将足够大或者足够复杂的字符串编译成 AST 对象时,Python 解释器有可能因为 Python AST 编译器的栈深度限制而崩溃。
在 3.2 版更改: Windows 和 Mac 的换行符均可使用。而且在 ‘exec’ 模式下的输入不必再以换行符结尾了。另增加了 optimize 参数。
在 3.5 版更改: 之前 source 中包含 null 字节的话会触发 TypeError 异常。
3.8 新版功能: ast.PyCF_ALLOW_TOP_LEVEL_AWAIT 现在可在旗标中传入以启用对最高层级 await, async for 和 async with 的支持。
class complex([real[, imag]])
返回值为 real + imag*1j 的复数,或将字符串或数字转换为复数。如果第一个形参是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。第二个形参不能是字符串。每个实参都可以是任意的数值类型(包括复数)。如果省略了 imag,则默认值为零,构造函数会像 int 和 float 一样进行数值转换。如果两个实参都省略,则返回 0j。
对于一个普通 Python 对象 x,complex(x) 会委托给 x.complex()。 如果 complex() 未定义则将回退至 float()。 如果 float() 未定义则将回退至 index()。
注解 当从字符串转换时,字符串在 + 或 - 的周围必须不能有空格。例如 complex(‘1+2j’) 是合法的,但 complex(‘1 + 2j’) 会触发 ValueError 异常。
数字类型 — int, float, complex 描述了复数类型。
在 3.6 版更改: 您可以使用下划线将代码文字中的数字进行分组。
在 3.8 版更改: 如果 complex() 和 float() 未定义则回退至 index()。
delattr(object, name)
setattr() 相关的函数。实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许,该函数将删除指定的属性。例如 delattr(x, ‘foobar’) 等价于 del x.foobar 。
class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
创建一个新的字典。dict 对象是一个字典类。参见 dict 和 映射类型 — dict 了解这个类。
其他容器类型,请参见内置的 list、set 和 tuple 类,以及 collections 模块。
dir([object])
如果没有实参,则返回当前本地作用域中的名称列表。如果有实参,它会尝试返回该对象的有效属性列表。
如果对象有一个名为 dir() 的方法,那么该方法将被调用,并且必须返回一个属性列表。这允许实现自定义 getattr() 或 getattribute() 函数的对象能够自定义 dir() 来报告它们的属性。
如果对象未提供 dir() 方法,该函数会尽量从对象的 dict 属性和其类型对象中收集信息。得到的列表不一定是完整,如果对象带有自定义 getattr() 方法时,结果可能不准确。
默认的 dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息:
如果对象是模块对象,则列表包含模块的属性名称。
如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。
否则,列表包含对象的属性名称,它的类属性名称,并且递归查找它的类的所有基类的属性。
返回的列表按字母表排序。例如:
import struct
dir() # show the names in the module namespace
['__builtins__', '__name__', 'struct']
dir(struct) # show the names in the struct module
['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',
'__initializing__', '__loader__', '__name__', '__package__',
'_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
'unpack', 'unpack_from']
class Shape:
def __dir__(self):
return ['area', 'perimeter', 'location']
s = Shape()
dir(s)
['area', 'location', 'perimeter']
注解 因为 dir() 主要是为了便于在交互式时使用,所以它会试图返回人们感兴趣的名字集合,而不是试图保证结果的严格性或一致性,它具体的行为也可能在不同版本之间改变。例如,当实参是一个类时,metaclass 的属性不包含在结果列表中。
divmod(a, b)
以两个(非复数)数字为参数,在作整数除法时,返回商和余数。若操作数为混合类型,则适用二进制算术运算符的规则。对于整数而言,结果与 (a // b, a % b) 相同。对于浮点数则结果为(q, a % b)
,其中 q 通常为 math.floor(a / b),但可能比它小 1。在任何情况下,q * b + a % b 都非常接近 a,如果 a % b 非零,则结果符号与 b 相同,并且 0 <= abs(a % b) < abs(b)。
enumerate(iterable, start=0)
返回一个枚举对象。iterable 必须是一个序列,或 iterator,或其他支持迭代的对象。 enumerate() 返回的迭代器的 next() 方法返回一个元组,里面包含一个计数值(从 start 开始,默认为 0)和通过迭代 iterable 获得的值。
>>>
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall')</