python 解释器内置了很多函数和类型,任何时候都能使用。以下按字母顺序给出列表。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的武都网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
内置函数 |
|||
---|---|---|---|
A abs() aiter() all() any() anext() ascii() B bin() bool() breakpoint() bytearray() bytes() C callable() chr() classmethod() compile() complex() D delattr() dict() dir() divmod() | E enumerate() eval() exec() F filter() float() format() frozenset() G getattr() globals() H hasattr() hash() help() hex() I id() input() int() isinstance() issubclass() iter() | L len() list() locals() M map() max() memoryview() min() N next() O object() oct() open() ord() P pow() print() property() | R range() repr() reversed() round() S set() setattr() slice() sorted() staticmethod() str() sum() super() T tuple() type() V vars() Z zip() _import () |
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, /)
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=False, /)
返回布尔值,True
或 False
。x 用标准的 真值测试过程 进行转换。如果 x 为 False 或省略,则返回 False
;否则返回 True
。 bool 类是 int 的子类(见 数字类型 —- int, float, complex )。它不能再被继承。它唯一的实例就是 False
和 True
(参阅 布尔值 )。
在 3.7 版更改: x 现在只能作为位置参数。
breakpoint(\args, **kws*)
This function drops you into the debugger at the call site. Specifically, it calls sys.breakpointhook(), passing args
and kws
straight through. By default, sys.breakpointhook()
calls pdb.set_trace() expecting no arguments. In this case, it is purely a convenience function so you don’t have to explicitly import pdb or type as much code to enter the debugger. However, sys.breakpointhook() can be set to some other function and breakpoint() will automatically call that, allowing you to drop into the debugger of choice. If sys.breakpointhook() is not accessible, this function will raise RuntimeError.
引发一个 审计事件 builtins.breakpoint
并附带参数 breakpointhook
。
3.7 新版功能.
class bytearray(source=b’’)
class bytearray(source, encoding)
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=b’’)
class bytes(source, encoding)
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__`` 属性。
在 3.11 版更改: Class methods can no longer wrap other descriptors such as property().
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=0, imag=0)
class complex(string, /)
返回值为 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, /)
This is a relative of setattr(). The arguments are an object and a string. The string must be the name of one of the object’s attributes. The function deletes the named attribute, provided the object allows it. For example, delattr(x, 'foobar')
is equivalent to del x.foobar
. name need not be a Python identifier (see setattr()).
class dict(\*kwarg*)
class dict(mapping, /, \*kwarg*)
class dict(iterable, /, \*kwarg*)
创建一个新的字典。dict 对象是一个字典类。参见 dict 和 映射类型 —- dict 了解这个类。
其他容器类型,请参见内置的 list、set 和 tuple 类,以及 collections 模块。
dir()
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'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
等价于:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
eval(expression, /, globals=None, locals=None)
实参是一个字符串,以及可选的 globals 和 locals。globals 实参必须是一个字典。locals 可以是任何映射对象。
表达式解析参数 expression 并作为 Python 表达式进行求值(从技术上说是一个条件列表),采用 globals 和 locals 字典作为全局和局部命名空间。 如果存在 globals 字典,并且不包含 __builtins__
键的值,则在解析 expression 之前会插入以该字符串为键以对内置模块 builtins 的字典的引用为值的项。 这样就可以在将 globals 传给 eval() 之前通过向其传入你自己的 __builtins__
字典来控制可供被执行代码可以使用哪些内置模块。 如果 locals 字典被省略则它默认为 globals 字典。 如果两个字典都被省略,则将使用调用 eval() 的环境中的 globals 和 locals 来执行该表达式。 注意,eval() 无法访问闭包环境中的 嵌套作用域 (非局部变量)。
返回值就是表达式的求值结果。 语法错误将作为异常被报告。 例如:
>>> x = 1
>>> eval('x+1')
2
该函数还可用于执行任意代码对象(比如由 compile() 创建的对象)。 这时传入的是代码对象,而非一个字符串了。如果代码对象已用参数为 mode 的 'exec'
进行了编译,那么 eval() 的返回值将为 None
。
提示: exec() 函数支持语句的动态执行。 globals() 和 locals() 函数分别返回当前的全局和本地字典,可供传给 eval() 或 exec() 使用。
如果给出的源数据是个字符串,那么其前后的空格和制表符将被剔除。
另外可以参阅 ast.literal_eval(),该函数可以安全执行仅包含文字的表达式字符串。
引发一个 审计事件 exec
附带参数 code_object
。
exec(object, globals=None, locals=None, /, **, closure=None*)
这个函数支持动态执行 Python 代码。 object 必须是字符串或者代码对象。 如果是字符串,那么该字符串将被解析为一系列 Python 语句并执行(除非发生语法错误)。 1 如果是代码对象,它将被直接执行。 在任何情况下,被执行的代码都应当是有效的文件输入(见参考手册中的 文件输入 一节)。 请注意即使在传递给 exec() 函数的代码的上下文中,nonlocal, yield 和 return 语句也不能在函数定义以外使用。 该函数的返回值是 None
。
无论在什么情况下,如果省略了可选部分,代码将运行于当前作用域中。如果只提供了 globals,则必须为字典对象(而不能是字典的子类),同时用于存放全局变量和局部变量。如果提供了 globals 和 locals,则将分别用于全局变量和局部变量。locals 可以是任意字典映射对象。请记住,在模块级别,globals 和 locals 是同一个字典。如果 exec 获得两个独立的对象作为 globals 和 locals,代码执行起来就像嵌入到某个类定义中一样。
如果 globals 字典不包含 __builtins__
键值,则将为该键插入对内建 builtins 模块字典的引用。因此,在将执行的代码传递给 exec() 之前,可以通过将自己的 __builtins__
字典插入到 globals 中来控制可以使用哪些内置代码。
The closure argument specifies a closure—a tuple of cellvars. It’s only valid when the object is a code object containing free variables. The length of the tuple must exactly match the number of free variables referenced by the code object.
引发一个 审计事件 exec
附带参数 code_object
。
备注
内置 globals() 和 locals() 函数各自返回当前的全局和本地字典,因此可以将它们传递给 exec() 的第二个和第三个实参。
备注
默认情况下,locals 的行为如下面 locals() 函数描述的一样:不要试图改变默认的 locals 字典。 如果您需要在 exec() 函数返回时查看代码对 locals 的影响,请明确地传递 locals 字典。
在 3.11 版更改: Added the closure parameter.
filter(function, iterable, /)
用 iterable 中函数 function 返回真的那些元素,构建一个新的迭代器。iterable 可以是一个序列,一个支持迭代的容器,或一个迭代器。如果 function 是 None
,则会假设它是一个身份函数,即 iterable 中所有返回假的元素会被移除。
请注意, filter(function, iterable)
相当于一个生成器表达式,当 function 不是 None
的时候为 (item for item in iterable if function(item))
;function 是 None
的时候为 (item for item in iterable if item)
。
请参阅 itertools.filterfalse() 了解,只有 function 返回 false 时才选取 iterable 中元素的补充函数。
class float(x=0.0, /)
返回从数字或字符串 x 生成的浮点数。
如果参数是个字符串,则应包含一个十进制数字,前面可选带上符号,也可选前后带有空白符。符号可以是``‘+’`` 或 '-'
;'+'
符号对值没有影响。参数也可以是一个代表 NaN(非数字)或正负无穷大的字符串。更确切地说,在去除前导和尾部的空白符后,输入参数必须符合以下语法:
- sign ::= "+" | "-"
- infinity ::= "Infinity" | "inf"
- nan ::= "nan"
- numeric_value ::=
floatnumber
| infinity | nan- numeric_string ::= [sign] numeric_value
这里的 floatnumber
是指 Python 的浮点数格式,在 浮点数字面值 中有介绍。大小写没有关系,所以“inf”、“Inf”、“INFINITY”、“iNfINity”都可接受为正无穷的拼写形式。
另一方面,如果实参是整数或浮点数,则返回具有相同值(在 Python 浮点精度范围内)的浮点数。如果实参在 Python 浮点精度范围外,则会触发 OverflowError。
对于一个普通 Python 对象 x
,float(x)
会委托给 x.__float__()
。 如果 __float__()
未定义则将回退至 __index__()
。
如果没有实参,则返回 0.0
。
示例:
>>> float('+1.23')
1.23
>>> float(' -12345\n')
-12345.0
>>> float('1e-003')
0.001
>>> float('+1E6')
1000000.0
>>> float('-Infinity')
-inf
数字类型 —- int, float, complex 描述了浮点类型。
在 3.6 版更改: 您可以使用下划线将代码文字中的数字进行分组。
在 3.7 版更改: x 现在只能作为位置参数。
在 3.8 版更改: 如果 __float__()
未定义则回退至 __index__()
。
format(value, format_spec=’’, /)
将 value 转换为“格式化后”的形式,格式由 format_spec 进行控制。format_spec 的解释方式取决于 value 参数的类型;但大多数内置类型使用一种标准的格式化语法: 格式规格迷你语言。
默认的 format_spec 是一个空字符串,它通常给出与调用 str(value) 相同的结果。
调用 format(value, format_spec)
会转换成 type(value).__format__(value, format_spec)
,所以实例字典中的 __format__()
方法将不会调用。如果方法搜索回退到 object 类但 format_spec 不为空,或者如果 format_spec 或返回值不是字符串,则会触发 TypeError 异常。
在 3.4 版更改: 当 format_spec 不是空字符串时, object().__format__(format_spec)
会触发 TypeError。
class frozenset(iterable=set(), /)
返回一个新的 frozenset 对象,它包含可选参数 iterable 中的元素。 frozenset
是一个内置的类。有关此类的文档,请参阅 frozenset 和 集合类型 —- set, frozenset。
请参阅内建的 set、list、tuple 和 dict 类,以及 collections 模块来了解其它的容器。
getattr(object, name, /)
getattr(object, name, default, /)
Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, 'foobar')
is equivalent to x.foobar
. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised. name need not be a Python identifier (see setattr()).
备注
由于 私有名称混合 发生在编译时,因此必须 手动混合私有属性(以两个下划线打头的属性)名称以使使用 getattr() 来提取它。
globals()
返回实现当前模块命名空间的字典。对于函数内的代码,这是在定义函数时设置的,无论函数在哪里被调用都保持不变。
hasattr(object, name, /)
该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True
,否则返回 False
。(此功能是通过调用 getattr(object, name)
看是否有 AttributeError 异常来实现的。)
hash(object, /)
返回该对象的哈希值(如果它有的话)。哈希值是整数。它们在字典查找元素时用来快速比较字典的键。相同大小的数字变量有相同的哈希值(即使它们类型不同,如 1 和 1.0)。
备注
如果对象实现了自己的 __hash__()
方法,请注意,hash() 根据机器的字长来截断返回值。另请参阅 __hash__()
。
help()
help(request)
启动内置的帮助系统(此函数主要在交互式中使用)。如果没有实参,解释器控制台里会启动交互式帮助系统。如果实参是一个字符串,则在模块、函数、类、方法、关键字或文档主题中搜索该字符串,并在控制台上打印帮助信息。如果实参是其他任意对象,则会生成该对象的帮助页。
请注意,如果在调用 help() 时,目标函数的形参列表中存在斜杠(/),则意味着斜杠之前的参数只能是位置参数。详情请参阅 有关仅限位置形参的 FAQ 条目。
该函数通过 site 模块加入到内置命名空间。
在 3.4 版更改: pydoc 和 inspect 的变更使得可调用对象的签名信息更加全面和一致。
hex(x, /)
将整数转换为以“0x”为前缀的小写十六进制字符串。如果 x 不是 Python int 对象,则必须定义返回整数的 __index__()
方法。一些例子:
>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
如果要将整数转换为大写或小写的十六进制字符串,并可选择有无“0x”前缀,则可以使用如下方法:
>>> '%#x' % 255, '%x' % 255, '%X' % 255
('0xff', 'ff', 'FF')
>>> format(255, '#x'), format(255, 'x'), format(255, 'X')
('0xff', 'ff', 'FF')
>>> f'{255:#x}', f'{255:x}', f'{255:X}'
('0xff', 'ff', 'FF')
另见 format() 获取更多信息。
另请参阅 int() 将十六进制字符串转换为以 16 为基数的整数。
备注
如果要获取浮点数的十六进制字符串形式,请使用 float.hex() 方法。
id(object, /)
返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。两个生命期不重叠的对象可能具有相同的 id() 值。
CPython 实现细节: This is the address of the object in memory.
引发一个 审计事件 builtins.id
,附带参数 id
。
input()
input(prompt, /)
如果存在 prompt 实参,则将其写入标准输出,末尾不带换行符。接下来,该函数从输入中读取一行,将其转换为字符串(除了末尾的换行符)并返回。当读取到 EOF 时,则触发 EOFError。例如:
>>> s = input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"
如果加载了 readline 模块,input() 将使用它来提供复杂的行编辑和历史记录功能。
引发一个 审计事件 builtins.input
附带参数 prompt
。
在成功读取输入之后引发一个 审计事件 builtins.input/result
附带结果。
class int(x=0, /)
class int(x, /, base=10)
返回一个基于数字或字符串 x 构造的整数对象,或者在未给出参数时返回 0
。 如果 x 定义了 __int__()
,int(x)
将返回 x.__int__()
。 如果 x 定义了 __index__()
,它将返回 x.__index__()
。 如果 x 定义了 __trunc__()
,它将返回 x.__trunc__()
。 对于浮点数,它将向零舍入。
如果 x 不是数字,或者有 base 参数,x 必须是字符串、bytes、表示进制为 base 的 整数字面值 的 bytearray 实例。该文字前可以有 +
或 -
(中间不能有空格),前后可以有空格。一个进制为 n 的数字包含 0 到 n-1 的数,其中 a
到 z
(或 A
到 Z
)表示 10 到 35。默认的 base 为 10 ,允许的进制有 0、2-36。2、8、16 进制的数字可以在代码中用 0b
/0B
、 0o
/0O
、 0x
/0X
前缀来表示。进制为 0 将安照代码的字面量来精确解释,最后的结果会是 2、8、10、16 进制中的一个。所以 int('010', 0)
是非法的,但 int('010')
和 int('010', 8)
是合法的。
整数类型定义请参阅 数字类型 —- int, float, complex 。
在 3.4 版更改: 如果 base 不是 int 的实例,但 base 对象有 base.__index__ 方法,则会调用该方法来获取进制数。以前的版本使用 base.__int__ 而不是 base.__index__。
在 3.6 版更改: 您可以使用下划线将代码文字中的数字进行分组。
在 3.7 版更改: x 现在只能作为位置参数。
在 3.8 版更改: 如果 __int__()
未定义则回退至 __index__()
。
在 3.11 版更改: The delegation to __trunc__()
is deprecated.
在 3.11 版更改: int string inputs and string representations can be limited to help avoid denial of service attacks. A ValueError is raised when the limit is exceeded while converting a string x to an int or when converting an int into a string would exceed the limit. See the integer string conversion length limitation documentation.
isinstance(object, classinfo, /)
Return True
if the object argument is an instance of the classinfo argument, or of a (direct, indirect, or virtual) subclass thereof. If object is not an object of the given type, the function always returns False
. If classinfo is a tuple of type objects (or recursively, other such tuples) or a union 类型 of multiple types, return True
if object is an instance of any of the types. If classinfo is not a type or tuple of types and such tuples, a TypeError exception is raised. TypeError may not be raised for an invalid type if an earlier check succeeds.
在 3.10 版更改: classinfo 可以是一个 union 类型。
issubclass(class, classinfo, /)
如果 class 是 classinfo 的子类(直接、间接或 虚的 ),则返回 True
。类将视为自己的子类。classinfo 可为类对象的元组(或递归地,其他这样的元组)或 union 类型,这时如果 class 是 classinfo 中任何条目的子类,则返回 True
。任何其他情况都会触发 TypeError 异常。
在 3.10 版更改: classinfo 可以是一个 union 类型。
iter(object, /)
iter(object, sentinel, /)
返回一个 iterator 对象。根据是否存在第二个实参,第一个实参的解释是非常不同的。如果没有第二个实参,object 必须是支持 iterable 协议(有 __iter__()
方法)的集合对象,或必须支持序列协议(有 __getitem__()
方法,且数字参数从 0
开始)。如果它不支持这些协议,会触发 TypeError。如果有第二个实参 sentinel,那么 object 必须是可调用的对象。这种情况下生成的迭代器,每次迭代调用它的 __next__() 方法时都会不带实参地调用 object;如果返回的结果是 sentinel 则触发 StopIteration,否则返回调用结果。
另请参阅 迭代器类型。
适合 iter() 的第二种形式的应用之一是构建块读取器。 例如,从二进制数据库文件中读取固定宽度的块,直至到达文件的末尾:
from functools import partial
with open('mydata.db', 'rb') as f:
for block in iter(partial(f.read, 64), b''):
process_block(block)
len(s, /)
返回对象的长度(元素个数)。实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。
CPython 实现细节: len
对于大于 sys.maxsize 的长度如 range(2 ** 100) 会引发 OverflowError。
class list
class list(iterable, /)
虽然被称为函数,list 实际上是一种可变序列类型,详情请参阅 列表 和 序列类型 —- list, tuple, range。
locals()
更新并返回表示当前本地符号表的字典。 在函数代码块但不是类代码块中调用 locals() 时将返回自由变量。 请注意在模块层级上,locals() 和 globals() 是同一个字典。
备注
不要更改此字典的内容;更改不会影响解释器使用的局部变量或自由变量的值。
map(function, iterable, /, \iterables*)
Return an iterator that applies function to every item of iterable, yielding the results. If additional iterables arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. With multiple iterables, the iterator stops when the shortest iterable is exhausted. For cases where the function inputs are already arranged into argument tuples, see itertools.starmap().
max(iterable, /, **, key=None*)
max(iterable, /, **, default, key=None*)
max(arg1, arg2, /, \args, key=None*)
返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。
如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;如果提供了两个及以上的位置参数,则返回最大的位置参数。
有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。
如果有多个最大元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc, reverse=True)[0]
和 heapq.nlargest(1, iterable, key=keyfunc)
保持一致。
3.4 新版功能: keyword-only 实参 default 。
在 3.8 版更改: key 可以为 None
。
class memoryview(object)
返回由给定实参创建的“内存视图”对象。有关详细信息,请参阅 内存视图。
min(iterable, /, **, key=None*)
min(iterable, /, **, default, key=None*)
min(arg1, arg2, /, \args, key=None*)
返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。
如果只提供了一个位置参数,它必须是 iterable,返回可迭代对象中最小的元素;如果提供了两个及以上的位置参数,则返回最小的位置参数。
有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。
如果有多个最小元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc)[0]
和 heapq.nsmallest(1, iterable, key=keyfunc)
保持一致。
3.4 新版功能: keyword-only 实参 default 。
在 3.8 版更改: key 可以为 None
。
next(iterator, /)
next(iterator, default, /)
通过调用 iterator 的 __next__() 方法获取下一个元素。如果迭代器耗尽,则返回给定的 default,如果没有默认值则触发 StopIteration。
class object
返回一个不带特征的新对象。object 是所有类的基类。它带有所有 Python 类实例均通用的方法。本函数不接受任何参数。
备注
由于 object 没有 __dict__,因此无法将任意属性赋给 object 的实例。
oct(x, /)
将一个整数转变为一个前缀为“0o”的八进制字符串。结果是一个合法的 Python 表达式。如果 x 不是 Python 的 int 对象,那它需要定义 __index__()
方法返回一个整数。一些例子:
>>> oct(8)
'0o10'
>>> oct(-56)
'-0o70'
若要将整数转换为八进制字符串,并可选择是否带有“0o”前缀,可采用如下方法:
>>> '%#o' % 10, '%o' % 10
('0o12', '12')
>>> format(10, '#o'), format(10, 'o')
('0o12', '12')
>>> f'{10:#o}', f'{10:o}'
('0o12', '12')
另见 format() 获取更多信息。
open(file, mode=’r’, buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
打开 file 并返回对应的 file object。 如果该文件不能被打开,则引发 OSError。 请参阅 读写文件 获取此函数的更多用法示例。
file 是一个 path-like object,表示将要打开的文件的路径(绝对路径或者相对当前工作目录的路径),也可以是要封装文件对应的整数类型文件描述符。(如果给出的是文件描述符,则当返回的 I/O 对象关闭时它也会关闭,除非将 closefd 设为 False
。)
mode is an optional string that specifies the mode in which the file is opened. It defaults to 'r'
which means open for reading in text mode. Other common values are 'w'
for writing (truncating the file if it already exists), 'x'
for exclusive creation, and 'a'
for appending (which on some Unix systems, means that all writes append to the end of the file regardless of the current seek position). In text mode, if encoding is not specified the encoding used is platform-dependent: locale.getencoding() is called to get the current locale encoding. (For reading and writing raw bytes use binary mode and leave encoding unspecified.) The available modes are:
字符 |
含意 |
---|---|
| 读取(默认) |
| 写入,并先截断文件 |
| 排它性创建,如果文件已存在则失败 |
| 打开文件用于写入,如果文件存在则在末尾追加 |
| 二进制模式 |
| 文本模式(默认) |
| 打开用于更新(读取与写入) |
默认模式为 'r'
(打开文件用于读取文本,与 'rt'
同义)。'w+'
和 'w+b'
模式将打开文件并清空内容。而 'r+'
和 'r+b'
模式将打开文件但不清空内容。
正如在 概述 中提到的,Python区分二进制和文本I/O。以二进制模式打开的文件(包括 mode 参数中的 'b'
)返回的内容为 bytes 对象,不进行任何解码。在文本模式下(默认情况下,或者在 mode 参数中包含 't'
)时,文件内容返回为 str ,首先使用指定的 encoding (如果给定)或者使用平台默认的的字节编码解码。
备注
Python不依赖于底层操作系统的文本文件概念;所有处理都由Python本身完成,因此与平台无关。
buffering 是一个可选的整数,用于设置缓冲策略。 传入 0 来关闭缓冲(只允许在二进制模式下),传入 1 来选择行缓冲(只在文本模式下可用),传入一个整数 > 1 来表示固定大小的块缓冲区的字节大小。注意,这样指定缓冲区的大小适用于二进制缓冲的 I/O ,但 TextIOWrapper
(即用 mode='r+'
打开的文件)会有另一种缓冲。要禁用在 TextIOWrapper
缓冲,考虑使用 io.TextIOWrapper.reconfigure() 的 write_through
标志来。当没有给出 buffering 参数时,默认的缓冲策略工作如下。
二进制文件以固定大小的块进行缓冲;使用启发式方法选择缓冲区的大小,尝试确定底层设备的“块大小”或使用 io.DEFAULT_BUFFER_SIZE。在许多系统上,缓冲区的长度通常为4096或8192字节。
“交互式”文本文件( isatty() 返回 True
的文件)使用行缓冲。其他文本文件使用上述策略用于二进制文件。
encoding is the name of the encoding used to decode or encode the file. This should only be used in text mode. The default encoding is platform dependent (whatever locale.getencoding() returns), but any text encoding supported by Python can be used. See the codecs module for the list of supported encodings.
errors 是一个可选的字符串参数,用于指定如何处理编码和解码错误 - 这不能在二进制模式下使用。可以使用各种标准错误处理程序(列在 错误处理方案 ),但是使用 codecs.register_error() 注册的任何错误处理名称也是有效的。标准名称包括:
如果存在编码错误,'strict'
会引发 ValueError 异常。 默认值 None
具有相同的效果。
'ignore'
忽略错误。请注意,忽略编码错误可能会导致数据丢失。
'replace'
会将替换标记(例如 '?'
)插入有错误数据的地方。
'surrogateescape'
将把任何不正确的字节表示为 U+DC80 至 U+DCFF 范围内的下方替代码位。 当在写入数据时使用 surrogateescape
错误处理句柄时这些替代码位会被转回到相同的字节。 这适用于处理具有未知编码格式的文件。
只有在写入文件时才支持 'xmlcharrefreplace'
。编码不支持的字符将替换为相应的XML字符引用 nnn;
。
'backslashreplace'
用Python的反向转义序列替换格式错误的数据。
'namereplace'
(也只在编写时支持)用 \N{...}
转义序列替换不支持的字符。
newline determines how to parse newline characters from the stream. It can be None
, ''
, '\n'
, '\r'
, and '\r\n'
. It works as follows:
从流中读取输入时,如果 newline 为 None
,则启用通用换行模式。输入中的行可以以 '\n'
,'\r'
或 '\r\n'
结尾,这些行被翻译成 '\n'
在返回呼叫者之前。如果它是 ''
,则启用通用换行模式,但行结尾将返回给调用者未翻译。如果它具有任何其他合法值,则输入行仅由给定字符串终止,并且行结尾将返回给未调用的调用者。
将输出写入流时,如果 newline 为 None
,则写入的任何 '\n'
字符都将转换为系统默认行分隔符 os.linesep。如果 newline 是 ''
或 '\n'
,则不进行翻译。如果 newline 是任何其他合法值,则写入的任何 '\n'
字符将被转换为给定的字符串。
如果 closefd 为 False
且给出的不是文件名而是文件描述符,那么当文件关闭时,底层文件描述符将保持打开状态。如果给出的是文件名,则 closefd 必须为 True
(默认值),否则将触发错误。
可以通过传递可调用的 opener 来使用自定义开启器。然后通过使用参数( file,flags )调用 opener 获得文件对象的基础文件描述符。 opener 必须返回一个打开的文件描述符(使用 os.open as opener 时与传递 None
的效果相同)。
新创建的文件是 不可继承的。
下面的示例使用 os.open() 函数的 dir_fd 的形参,从给定的目录中用相对路径打开文件:
>>> import os
>>> dir_fd = os.open('somedir', os.O_RDONLY)
>>> def opener(path, flags):
... return os.open(path, flags, dir_fd=dir_fd)
...
>>> with open('spamspam.txt', 'w', opener=opener) as f:
... print('This will be written to somedir/spamspam.txt', file=f)
...
>>> os.close(dir_fd) # don't leak a file descriptor
open() 函数
本文标题:创新互联Python教程:内置函数
网站网址:http://www.shufengxianlan.com/qtweb/news29/26229.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联