资讯专栏INFORMATION COLUMN

Python标准库---4、内置函数(L-M-N-O)

MartinHan / 1383人阅读

摘要:上一篇文章标准库内置函数下一篇文章标准库内置函数内置函数返回对象的长度元素个数。对表示单个字符的字符串,返回代表它码点的整数。上一篇文章标准库内置函数下一篇文章标准库内置函数

上一篇文章:Python标准库---3、内置函数(G-H-I-J-K)
下一篇文章:Python标准库---5、内置函数(P-K-R)
内置函数:

38. len(s)
返回对象的长度(元素个数)。实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。
39. class list([iterable])
除了是函数,list 也是可变序列类型,详情请参阅 列表 和 序列类型 --- list, tuple, range。
40. locals()
更新并返回表示当前本地符号表的字典。 在函数代码块但不是类代码块中调用 locals() 时将返回自由变量。 请注意在模块层级上,locals() 和 globals() 是同一个字典。

注解 不要更改此字典的内容;更改不会影响解释器使用的局部变量或自由变量的值。

41. map(function, iterable, ...)
产生一个将 function 应用于迭代器中所有元素并返回结果的迭代器。如果传递了额外的 iterable 实参,function 必须接受相同个数的实参,并使用所有迭代器中并行获取的元素。当有多个迭代器时,最短的迭代器耗尽则整个迭代结束。如果函数的输入已经是元组实参,请参阅 itertools.starmap()。
42. max(iterable, *[, key, default])

max(arg1, arg2, *args[, key])

返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。

如果只提供了一个位置参数,它必须是非空 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 。

43. memoryview(obj)
返回由给定实参创建的“内存视图”对象。有关详细信息,请参阅 内存视图。
44. min(iterable, *[, key, default])

min(arg1, arg2, *args[, key])

返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。

如果只提供了一个位置参数,它必须是 iterable,返回可迭代对象中最小的元素;如果提供了两个及以上的位置参数,则返回最小的位置参数。

有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。

如果有多个最小元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc)[0] 和 heapq.nsmallest(1, iterable, key=keyfunc) 保持一致。
3.4 新版功能: keyword-only 实参 default 。

45. next(iterator[, default])
通过调用 iterator 的 __next__() 方法获取下一个元素。如果迭代器耗尽,则返回给定的 default,如果没有默认值则触发 StopIteration。
46. class object
返回一个没有特征的新对象。object 是所有类的基类。它具有所有 Python 类实例的通用方法。这个函数不接受任何实参。

注解 由于 object 没有 __dict__,因此无法将任意属性赋给 object 的实例。

47. 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() 获取更多信息。
48. 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 是一个可选字符串,用于指定打开文件的模式。默认值是 "r" ,这意味着它以文本模式打开并读取。其他常见模式有:写入 "w" (截断已经存在的文件);排它性创建 "x" ;追加写 "a" (在 一些 Unix 系统上,无论当前的文件指针在什么位置,所有 写入都会追加到文件末尾)。在文本模式,如果 encoding 没有指定,则根据平台来决定使用的编码:使用 locale.getpreferredencoding(False) 来获取本地编码。(要读取和写入原始字节,请使用二进制模式并不要指定 encoding。)可用的模式有:

默认的模式是 "r" (打开并读取文本,同 "rt" )。对于二进制写入, "w+b" 模式打开并把文件截断成 0 字节; "r+b" 则不会截断。

正如在 概述 中提到的,Python区分二进制和文本I/O。以二进制模式打开的文件(包括 mode 参数中的 "b" )返回的内容为 bytes对象,不进行任何解码。在文本模式下(默认情况下,或者在 *mode* 参数中包含 "t"` )时,文件内容返回为 str ,首先使用指定的 encoding (如果给定)或者使用平台默认的的字节编码解码。

此外还允许使用一个模式字符 "U",该字符已不再具有任何效果,并被视为已弃用。 之前它会在文本模式中启用 universal newlines,这在 Python 3.0 中成为默认行为。 请参阅 newline 形参的文档了解更多细节。

注解 Python不依赖于底层操作系统的文本文件概念;所有处理都由Python本身完成,因此与平台无关。
buffering 是一个可选的整数,用于设置缓冲策略。传递0以切换缓冲关闭(仅允许在二进制模式下),1选择行缓冲(仅在文本模式下可用),并且>1的整数以指示固定大小的块缓冲区的大小(以字节为单位)。如果没有给出 buffering 参数,则默认缓冲策略的工作方式如下:

二进制文件以固定大小的块进行缓冲;使用启发式方法选择缓冲区的大小,尝试确定底层设备的“块大小”或使用 io.DEFAULT_BUFFER_SIZE。在许多系统上,缓冲区的长度通常为4096或8192字节。

“交互式”文本文件( isatty() 返回 True 的文件)使用行缓冲。其他文本文件使用上述策略用于二进制文件。

encoding 是用于解码或编码文件的编码的名称。这应该只在文本模式下使用。默认编码是依赖于平台的(不 管 locale.getpreferredencoding() 返回何值),但可以使用任何Python支持的 text encoding 。有关支持的编码列表,请参阅 codecs 模块。

errors 是一个可选的字符串参数,用于指定如何处理编码和解码错误 - 这不能在二进制模式下使用。可以使用各种标准错误处理程序(列在 Error Handlers ),但是使用 codecs.register_error() 注册的任何错误处理名称也是有效的。标准名称包括:

如果存在编码错误,"strict" 会引发 ValueError 异常。 默认值 None 具有相同的效果。

"ignore" 忽略错误。请注意,忽略编码错误可能会导致数据丢失。

"replace" 会将替换标记(例如 "?" )插入有错误数据的地方。

"surrogateescape" 将表示任何不正确的字节作为Unicode专用区中的代码点,范围从U+DC80到U+DCFF。当在写入数据时使用 surrogateescape 错误处理程序时,这些私有代码点将被转回到相同的字节中。这对于处理未知编码的文件很有用。

只有在写入文件时才支持 "xmlcharrefreplace"。编码不支持的字符将替换为相应的XML字符引用 nnn;。

"backslashreplace" 用Python的反向转义序列替换格式错误的数据。

"namereplace" (也只在编写时支持)用 N{...} 转义序列替换不支持的字符。

newline 控制 universal newlines 模式如何生效(它仅适用于文本模式)。它可以是 None,"","n","r" 和 "rn"。它的工作原理:

从流中读取输入时,如果 newline 为 None,则启用通用换行模式。输入中的行可以以 "n","r" 或 "rn" 结尾,这些行被翻译成 "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() 函数所返回的 file object 类型取决于所用模式。 当使用 open() 以文本模式 ("w", "r", "wt", "rt" 等) 打开文件时,它将返回 io.TextIOBase (特别是 io.TextIOWrapper) 的一个子类。 当使用缓冲以二进制模式打开文件时,返回的类是 io.BufferedIOBase 的一个子类。 具体的类会有多种:在只读的二进制模式下,它将返回 io.BufferedReader;在写入二进制和追加二进制模式下,它将返回 io.BufferedWriter,而在读/写模式下,它将返回 io.BufferedRandom。 当禁用缓冲时,则会返回原始流,即 io.RawIOBase 的一个子类 io.FileIO。

另请参阅文件操作模块,例如 fileinput、io (声明了 open())、os、os.path、tempfile 和 shutil。

在 3.3 版更改:
增加了 opener 形参。

增加了 "x" 模式。

过去触发的 IOError,现在是 OSError 的别名。

如果文件已存在但使用了排它性创建模式( "x" ),现在会触发 FileExistsError。

在 3.4 版更改:
文件现在禁止继承。

Deprecated since version 3.4, will be removed in version 4.0: "U" 模式。

在 3.5 版更改:
如果系统调用被中断,但信号处理程序没有触发异常,此函数现在会重试系统调用,而不是触发 InterruptedError 异常(原因详见 PEP 475)。

增加了 "namereplace" 错误处理接口。

在 3.6 版更改:
增加对实现了 os.PathLike 对象的支持。

在 Windows 上,打开一个控制台缓冲区将返回 io.RawIOBase 的子类,而不是 io.FileIO。

49. ord(c)
对表示单个 Unicode 字符的字符串,返回代表它 Unicode 码点的整数。例如 ord("a") 返回整数 97, ord("€") (欧元符合)返回 8364 。这是 chr() 的逆函数。
上一篇文章:Python标准库---3、内置函数(G-H-I-J-K)
下一篇文章:Python标准库---5、内置函数(P-K-R)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43982.html

相关文章

  • Python标准---5、内置函数(P-K-R)

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置函数内置函数返回的次幂如果存在,则对取余比直接计算更高效。是用于删除属性值的函数。上一篇文章标准库内置函数下一篇文章标准库内置函数 上一篇文章:Python标准库---4、内置函数(L-M-N-O)下一篇文章:Python标准库---6、内置函数(P-K-R-S-T-U) 内置函数: showImg(https://segmentfault...

    gityuan 评论0 收藏0
  • Python标准---3、内置函数(G-H-I-J-K)

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置函数内置函数返回对象命名属性的值。返回表示当前全局符号表的字典。例如,从二进制数据库文件中读取固定宽度的块,直至到达文件的末尾上一篇文章标准库内置函数下一篇文章标准库内置函数 上一篇文章:Python标准库---2、内置函数(D-E-F)下一篇文章:Python标准库---4、内置函数(L-M-N-O) 内置函数: showImg(http...

    gself 评论0 收藏0
  • Python标准---8、内置常量

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置类型逻辑值检测布尔运算比较内置常量有少数的常量存在于内置命名空间中。给赋值是非法的并会引发。如果所有尝试都返回,则解释器将引发适当的异常。如果没有以选项启动,则此常量为真值。 上一篇文章:Python标准库---7、内置函数(V-W-X-Y-Z)下一篇文章:Python标准库---9、内置类型:逻辑值检测、布尔运算、比较 内置常量 有少数的...

    gplane 评论0 收藏0
  • Python标准---1、内置函数(A-B-C)

    摘要:内置函数返回一个数的绝对值。使用标准的真值测试过程来转换。因此,构造函数的实参和相同。实参的合法范围是到进制表示是。数字类型描述了复数类型。上一篇文章标准库简介下一篇文章标准库内置函数 上一篇文章:Python标准库----0、简介下一篇文章:Python标准库---1、内置函数(D-E-F) Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。以下按字母表顺序列出它...

    bingo 评论0 收藏0
  • Python标准---7、内置函数(V-W-X-Y-Z)

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置常量内置函数返回模块类实例或任何其它具有属性的对象的属性。相当于函数会保证可迭代对象按从左至右的顺序被求值。上一篇文章标准库内置函数下一篇文章标准库内置常量 上一篇文章:Python标准库---6、内置函数(P-K-R-S-T-U)下一篇文章:Python标准库---8、内置常量 内置函数: showImg(https://segmentf...

    qiangdada 评论0 收藏0

发表评论

0条评论

MartinHan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<