返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。
如果只提供了一个位置参数,它必须是 iterable,返回可迭代对象中最小的元素;如果提供了两个及以上的位置参数,则返回最小的位置参数。
有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给list.sort()的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发ValueError。
如果有多个最小元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable,key=keyfunc)[0]
和 heapq.nsmallest(1, iterable, key=keyfunc)
保持一致。
a = [1,99,2,3,4,5,66,] b = min(a, key=list.sort(a), default=0) print(b) 结果: 1
key和default为关键字参数,可以不写。key为排序方法,可自定义。如果iterable为空时,返回默认值default
a = [] b = min(a, key=list.sort(a), default=0) print(b) 结果: 0
通过调用 iterator 的 __next__()方法获取下一个元素。如果迭代器耗尽,则返回给定的 default,如果没有默认值则触发 StopIteration。
# 首先获得Iterator对象: it = iter([1, 2, 3, 4, 5]) # 循环: while True: try: # 获得下一个值: x = next(it) print(x) except StopIteration: # 遇到StopIteration就退出循环 break
返回一个没有特征的新对象。
将一个整数转换成 8 进制字符串,8 进制以 0o 作为前缀表示。
>>> oct(20) '0o24' >>> oct(33) '0o41'
打开一个文件并返回一个文件对象。
file,表示将要打开的文件的路径(绝对路径或者当前工作目录的相对路径),也可以是要被封装的整数类型文件描述符。(如果是文件描述符,它会随着返回的 I/O 对象关闭而关闭,除非 closefd 被设为 False
。)
mode,是一个可选字符串,用于指定打开文件的模式。默认值是 'r'
,这意味着它以文本模式打开并读取。其他常见模式有:写入 'w'
(截断已经存在的文件);排它性创建 'x'
;追加写 'a'
(在 一些 Unix 系统上,无论当前的文件指针在什么位置,所有 写入都会追加到文件末尾)。在文本模式,如果 encoding 没有指定,则根据平台来决定使用的编码:使用 locale.getpreferredencoding(False)
来获取本地编码。(要读取和写入原始字节,请使用二进制模式并不要指定 encoding。)可用的模式有:
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
buffering 是一个可选的整数,用于设置缓冲策略。传递0以切换缓冲关闭(仅允许在二进制模式下),1选择行缓冲(仅在文本模式下可用),并且>1的整数以指示固定大小的块缓冲区的大小(以字节为单位)。如果没有给出 buffering 参数,则默认缓冲策略的工作方式如下:
二进制文件以固定大小的块进行缓冲;使用启发式方法选择缓冲区的大小,尝试确定底层设备的“块大小”或使用 io.DEFAULT_BUFFER_SIZE。在许多系统上,缓冲区的长度通常为4096或8192字节。
“交互式”文本文件使用行缓冲。其他文本文件使用上述策略用于二进制文件。
encoding 是用于解码或编码文件的编码的名称。这应该只在文本模式下使用。
errors 是一个可选的字符串参数,用于指定如何处理编码和解码错误 - 这不能在二进制模式下使用。
newline 控制universal newlines模式如何生效(它仅适用于文本模式)。它可以是 None
,''
,'\n'
,'\r'
和 '\r\n'
。它的工作原理:
从流中读取输入时,如果 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
的效果相同)。详情链接
对表示单个 Unicode 字符的字符串,返回代表它 Unicode 码点的整数。这是chr()的逆函数。
>>> ord('a') 97 >>> ord('A') 65
返回 base 的 exp 次幂;如果 mod 存在,则返回 base 的 exp 次幂对 mod 取余(比 pow(base, exp) % mod
更高效)。 两参数形式 pow(base, exp)
等价于乘方运算符: base**exp
。
参数必须具有数值类型。 对于混用的操作数类型,则将应用双目算术运算符的类型强制转换规则。 对于 int
操作数,结果具有与操作数相同的类型(强制转换后),除非第二个参数为负值;在这种情况下,所有参数将被转换为浮点数并输出浮点数结果。 例如,10**2
返回 100
,但 10**-2
返回 0.01
。
对于 int操作数 base 和 exp,如果给出 mod,则 mod 必须为整数类型并且 mod 必须不为零。 如果给出 mod 并且 exp 为负值,则 base 必须相对于 mod 不可整除。 在这种情况下,将会返回 pow(inv_base, -exp,mod)
,其中 inv_base 为 base 的倒数对 mod 取余。
>>> pow(38,-1,mod=97) 23 >>> pow(2,10,mod=97) 54 >>> pow(2,10,mod=10) 4
用于打印输出,最常见的一个函数。将 objects 打印到 file 指定的文本流,以 sep 分隔并在末尾加上 end。 sep, end, file 和 flush 如果存在,它们必须以关键字参数的形式给出。
import time print("Loading",end = "") for i in range(20): print(".",end = '',flush = True) time.sleep(0.5)
a = ['一','╲','丨','╱','一','╲'] while 1: for i in a: print('\r'+i, end='') time.sleep(0.5)
with open('x.txt') as f: print('ok my test', file=f)#写文件
在新式类中返回属性值。
返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。range实际上是一个不可变的序列类型。
>>> range(5) range(0, 5) >>> for i in range(6,10,1): ... print(i) ... 6 7 8 9
将对象转化为供解释器读取的形式。
>>> list_2 = [3,4,5] >>> repr(list_2) '[3, 4, 5]'
返回一个反转的迭代器。
>>> list_2 = [3,4,5] >>> print(list(reversed(list_2))) [5, 4, 3] >>> reversed(list_2) <list_reverseiterator object at 0x00000000024495E0>
返回 number 舍入到小数点后 ndigits 位精度的值。 如果 ndigits 被省略或为 None
,则返回最接近输入值的整数。
>>> round(3.141526,2) 3.14
创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
>>> set('Hello Python') {'e', ' ', 'n', 'o', 'P', 't', 'y', 'l', 'H', 'h'}