Python--内建函数大全

2023-11-19

Python 解释器内置了许多函数和类型,列表如下(按字母排序)(省略了几个我没用过或者不常用的)。
-
-
内建函数表
-
-
abs()
delattr()
hash()
memoryview()
set()
all()
dict()
help()
min()
setattr()
any()
dir()
hex()
next()
slice()
ascii()
divmod()
id()
object()
sorted()
bin()
enumerate()
input()
oct()
staticmethod()
bool()
eval()
int()
open()
str()
breakpoint()
exec()
isinstance()
ord()
sum()
bytearray()
filter()
issubclass()
pow()
super()
bytes()
float()
iter()
print()
tuple()
callable()
format()
len()
property()
type()
chr()
frozenset()
list()
range()
vars()
classmethod()
getattr()
locals()
repr()
zip()
compile()
globals()
map()
reversed()
__import__()
complex()
hasattr()
max()
round()
 

abs(x)

返回一个数字的绝对值。参数可以是整数或浮点数。如果参数是一个复数,则返回它的模。

all(iterable)

如果 iterable 的所有元素均为 True(或 iterable 为空),则返回 True 。相当于:
def all(iterable):
for element in iterable:
if not element:
return False
return True

any(iterable)

如果 iterable 中有任何一个元素为 true,则返回 True 。如果 iterable 为空,则返回 False 。相当于:
def any(iterable):
for element in iterable:
if element:
return True
return False

ascii(object)

类似 repr() ,返回一个包含对象的可打印表示的字符串,但使用 \x , \u 或 \U 转义符转义由 repr() 返回的字符串中的非 ASCII 字符。这会生成一个类似于 Python 2 中 repr() 返回的字符串。
In [1]: s = 'python \n 中文'
In [2]: ascii(s)
Out[2]: "'python \\n \\u4e2d\\u6587'"
In [3]: repr(s)
Out[3]: "'python \\n 中文'"

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() 。
当 x 不是 int 类型时
In [1]: class Test:
...: def __init__(self, n):
...: self.n = n
...:
...: def __index__(self):
...: return self.n
...:
In [2]: t = Test(10)
In [3]: bin(t)
Out[3]: '0b1010'

class bool([x])

返回一个布尔值,即 True 或 False 中的一个。 x 使用标准 真值测试方式 进行转换。如果 x 为 false 或省略,则返回 False ; 否则返回 True 。 bool 类是 int 的子类。它不能进一步子类化。它唯一的实例是 False 和 True 。

class bytearray([source[, encoding[, errors]]])

返回一个新的字节数组。 bytearray 类是一个在 0 <= x < 256 范围内的可变整数序列。
可选的 source 参数可以用几种不同的方式初始化数组:
  • 如果它是一个字符串,则还必须给出 encoding(以及可选的 errors)参数; 然后 bytearray() 使用 str.encode() 将字符串转换为字节。
  • 如果它是一个整数,则将其作为数组的长度,并将用空字节进行初始化。
  • 如果它是符合缓冲区接口的对象,则将使用该对象的只读缓冲区来初始化字节数组。
  • 如果它是一个 iterable,必须是 0 <= x <256 范围内的可迭代对象,它们将被用作数组的初始内容。
没有参数,就会创建一个大小为 0 的数组。
In [11]: bytearray(5)
Out[11]: bytearray(b'\x00\x00\x00\x00\x00')
In [12]: bytearray([23, 32, 4, 67, 9, 96, 123])
Out[12]: bytearray(b'\x17 \x04C\t`{')
In [13]: bytearray()
Out[13]: bytearray(b'')

class bytes([source[, encoding[, errors]]])

返回一个新的 “bytes” 对象,它是一个在 0 <= x <256 范围内的不可变整数序列。 bytes 是 bytearray 的不可变版本 - 它具有相同的非变异方法和相同的索引和切片行为。
因此,构造函数参数解释请参考 bytearray() 。
字节对象也可以使用文字创建。请参阅 字符串和字节文字

callable(object)

如果 object 参数可调用,则返回 True ,否则返回 False 。如果返回 true,调用失败仍然是可能的,但如果是 false,调用 object 将永远不会成功。请注意,类是可调用的(调用一个类返回一个新的实例); 如果类有一个 __call __() 方法,则实例可以被调用。
3.2版本中的新功能:此功能在 Python 3.0 中首先被删除,然后在 Python 3.2 中恢复。
In [19]: a = 1
In [20]: callable(a)
Out[20]: False
In [21]: def func():
...: pass
...:
In [22]: callable(func)
Out[22]: True
In [23]: class A:
...: pass
...:
In [24]: a = A()
In [25]: callable(a)
Out[25]: False
In [26]: class A:
...: def __call__(self, *args, **kwargs):
...: pass
...:
In [27]: a = A()
In [28]: callable(a)
Out[28]: True

chr(i)

返回表示 Unicode 代码点为整数 i 的字符的字符串。例如, chr(97) 返回字符串 'a' ,而 chr(8364) 返回字符串 '€' 。这是 ord() 的逆过程。
参数的有效范围是从 0 到 1,114,111(基于 16 的 0x10FFFF)。如果超出这个范围,将会抛出 ValueError。

@classmethod

将方法转换为类方法。
类方法将类作为第一个参数接收(隐式的),就像实例方法接收实例一样。为了声明一个类方法,习惯用法如下:
class C: @classmethod
def f(cls, arg1, arg2, ...): ...
!> 注意:类方法和静态方法不是一个概念

class complex([real[, imag]])

返回值为 real + imag*1j 的复数或者将字符串或数字转换为复数。如果第一个参数是一个字符串,它将被解释为一个复数,并且该函数必须在没有第二个参数的情况下被调用。第二个参数不能是一个字符串。每个参数可以是任何数字类型(包括复数)。如果省略了 imag,它将默认为零,并且构造函数用作像 int 和 float 这样的数字转换。如果两个参数均被省略,则返回 0j。
!> 从字符串转换时,该字符串不得在 + 或 - 运算符周围包含空格。例如, complex('1+2j') 很好,但 complex('1 + 2j') 会引发 ValueError 。

delattr(object, name)

参数是一个对象和一个字符串。该字符串必须是对象属性之一的名称。该函数删除指定的属性(只要该对象允许)。例如, delattr(x, 'foobar') 等价于 del x.foobar 。

dict

class dict(**kwarg)
class dict(mapping, **kwarg)
class dict( iterable , **kwarg )
创建一个新的字典
In [38]: dict(name='jack',age=18)
Out[38]: {'name': 'jack', 'age': 18}
In [39]: dict({'name': 'jack'}, age=18)
Out[39]: {'name': 'jack', 'age': 18}
In [40]: dict([('name', 'jack'),('age', 18)])
Out[40]: {'name': 'jack', 'age': 18}

dir([object])

尝试返回 object 的有效属性列表。如果没有参数,则返回当前本地作用域中的名称列表。
如果对象具有名为 __dir__() 的方法,则将调用此方法,并且必须返回属性列表。这允许实现自定义 __getattr__() 或 __getattribute__() 函数的对象自定义 dir() 报告其属性。
默认的 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']

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) 。
In [53]: divmod(10, 3)
Out[53]: (3, 1)
In [54]: divmod(10.1, 3)
Out[54]: (3.0, 1.0999999999999996)

enumerate( iterable, start=0)

返回一个枚举对象。 iterable 必须是一个序列,一个迭代器或其他支持迭代的对象。由 enumerate() 返回的迭代器的 __next__() 方法返回一个元组,该元组包含一个计数(从 start 开始,默认值为 0)以及遍历迭代获得的值。
>>> 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

filter(function, iterable)

用那些 function 返回 true 的 iterable 元素构造一个迭代器。iterable 可以是序列,支持迭代的容器或迭代器。如果 function 为 None ,则假定标识函数为 false,即为 false 的所有元素都被删除。
!> 请注意,如果 function 不是 None , filter(function, iterable) 等价于生成器表达式 (item for item in iterable if function(item)) 。如果 function 是 None ,等价于生成器表达式 (item for item in iterable if item) 。
In [8]: list(filter(None, [False, True, 0, 'test']))
Out[8]: [True, 'test']

class float([x])

返回一个由数字或字符串 x 构造的浮点数。
在删除前后空白字符后,输入必须符合以下语法:
sign ::= "+" | "-"
infinity ::= "Infinity" | "inf"
nan ::= "nan"
numeric_value ::= floatnumber | infinity | nan
numeric_string ::= [sign] numeric_value
对于一般的 Python 对象 x, float(x) 委托给 x .__float__() 。
如果没有给出参数,则返回 0.0。
例子:
>>> float('+1.23')
1.23>>> float(' -12345\n')
-12345.0>>> float('1e-003')
0.001>>> float('+1E6')
1000000.0>>> float('-Infinity')
-inf

format(value[, format_spec])

将值转换为 “格式化” 表示,由 format_spec 控制。 format_spec 的解释将取决于 value 参数的类型,不过,大多数内置类型都使用标准格式化语法: 格式化规范迷你语言
默认 format_spec 是一个空字符串,通常与调用 str(value) 的效果相同。
对 format(value, format_spec) 的调用被转换为 type(value).__format__(value, format_spec) ,它在搜索 value 的 __format__() 方法时绕过实例字典。如果方法搜索到达 object 并且 format_spec 非空,或者 format_spec 或返回值不是字符串,则会引发 TypeError 异常。
在 version 3.4 中:如果 format_spec 不是空字符串,则 object().__format__(format_spec) 会引发 TypeError 。

class frozenset([iterable])

返回一个新的 frozenset 对象,可选地使用来自 iterable 的元素。 frozenset 是一个内置的类。
frozenset 是不可变的,存在哈希值,它可以作为字典的 key,也可以作为其它集合的元素。一旦创建便不能更改,没有 add,remove 方法。

getattr(object, name[, default])

返回 object 的指定属性的值。name 必须是字符串。如果字符串是 object 属性之一的名称,则结果是该属性的值。例如, getattr(x, 'foobar') 等同于 x.foobar 。如果指定的属性不存在,则返回默认值(如果提供),否则引发 AttributeError 。

globals()

返回表示当前全局符号表的字典。它总是当前模块的字典(在函数或方法内部,它是定义它的模块,而不是从中调用它的模块)。

hasattr(object, name)

参数是一个对象和一个字符串。如果字符串是 object 属性之一的名称,则结果为 True ,否则为 False 。(这是通过调用 getattr(object, name) 并查看它是否引发 AttributeError 实现的。)

hash(object)

返回对象的散列值(如果有)。哈希值是整数。它们用于在字典查找期间快速比较字典键。比较相等的数值具有相同的散列值(即使它们具有不同的类型,就像 1 和 1.0 一样)。
!> 对于具有自定义 __hash__() 方法的对象,请注意, hash() 会根据主机的位宽截断返回值。
In [1]: class A:
...: def __hash__(self):
...: return 111111111111111111111111111111111111111
...:
In [2]: a = A()
In [3]: hash(a)
Out[3]: 1552656422630569496
In [4]: class A:
...: def __hash__(self):
...: return 11111111111
...:
...:
In [5]: a = A()
In [6]: hash(a)
Out[6]: 11111111111

help([object])

调用内置的帮助系统。 (此功能用于交互式使用。)如果未提供参数,则交互式帮助系统将在解释器控制台上启动。如果参数是一个字符串,那么该字符串将被查找为模块,函数,类,方法,关键字或文档主题的名称,并在控制台上打印帮助页面。如果参数是任何其他类型的对象,则会生成对象上的帮助页面。

hex(x)

将整数转换为以 “0x” 为前缀的小写十六进制字符串。如果 x 不是 Python int 对象,则必须定义返回整数的 __index __() 方法。一些例子:
>>> hex(255)
'0xff'>>> hex(-42)
'-0x2a'
如果要将整数转换为带有前缀或不带前缀的大写或小写十六进制字符串,可以使用以下任一方式:
>>> '%#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')
!> 要获取浮点数的十六进制字符串表示形式,请使用 float.hex() 方法。

id(object)

返回一个对象的 “identity”。它是一个整数,它在其生命周期中保证对这个对象唯一且恒定。具有非重叠生命周期的两个对象可能具有相同的 id() 值。
CPython 实现细节:这是内存中对象的地址。

input([prompt])

如果 prompt 参数存在,则将其写入标准输出而没有尾随换行符。然后该函数从输入中读取一行,将其转换为一个字符串(剥离尾随的换行符),然后返回该行。读取 EOF 时,引发 EOFError。例:
>>> s = input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"

int

class int(x=0)
class int(x, base=10)
返回一个由数字或字符串 x 构造的整数对象,如果没有给出参数,则返回 0。如果 x 不是数字,则返回 x.__int__() 。
In [22]: class A:
...: def __int__(self):
...: return 10
...:
In [23]: a = A()
In [24]: int(a)
Out[24]: 10
如果 x 不是数字或给定了 base,那么 x 必须是一个 string, bytes 或 bytearray 实例,它表示以 base 为基数的整数文字。或者,文字可以在前面加上 + 或 - (两者之间没有空格)。
In [25]: int('-10')
Out[25]: -10
In [26]: int('+10')
Out[26]: 10
In [27]: int('- 10')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-27-a62cc7794a18> in <module>()
----> 1 int('- 10')
ValueError: invalid literal for int() with base 10: '- 10'
In [28]: int('1000',2)
Out[28]: 8
In [29]: int('ff',16)
Out[29]: 255

isinstance(object, classinfo)

如果 object 参数是 classinfo 参数的实例或其(直接,间接或虚拟)子类的实例,则返回 true。如果 object 不是给定类型的对象,则该函数总是返回 false。如果 classinfo 是类型对象的元组, object 是其中任何一个类型的实例,则返回 true。如果 classinfo 不是类型或一组类型的元组,则会引发 TypeError 异常。
In [30]: isinstance(10, int)
Out[30]: True
In [31]: isinstance("str", (int, str))
Out[31]: True
In [32]: isinstance(max, int)
Out[32]: False

issubclass(class, classinfo)

如果 class 是 classinfo 的子类(直接,间接或虚拟),则返回 true。一个类被认为是它自己的一个子类。 classinfo 可以是类对象的元组,在这种情况下,将检查 classinfo 中的每个条目。在任何其他情况下,都会引发 TypeError 异常。
In [34]: issubclass(int, int)
Out[34]: True
In [35]: issubclass(10, int)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-35-37910f193c07> in <module>()
----> 1 issubclass(10, int)
TypeError: issubclass() arg 1 must be a class
In [36]: issubclass(int, str)
Out[36]: False

iter(object[, sentinel])

返回一个迭代器对象。根据第二个参数是否存在,第一个参数的解释有所不同。如果没有第二个参数,object 必须是支持迭代协议( __iter__() 方法)的集合对象,或者它必须支持序列协议(整数参数从 0 开始的 __getitem__() 方法)。如果它不支持这两种协议,则会引发 TypeError 。如果给出了第二个参数 sentinel,那么 object 必须是可调用的对象。在这种情况下创建的迭代器将调用没有参数的 object,以便对其 __next__() 方法进行调用;如果返回的值等于 sentinel,则会触发 StopIteration ,否则将返回该值。
第二种形式的 iter() 的一个例子是按行读取文件,直到到达某一行。以下示例读取文件,直到 readline() 方法返回空字符串:
with open('mydata.txt') as fp:
for line in iter(fp.readline, ''):
process_line(line)

len(s)

返回对象的长度(条目数量)。参数可以是一个序列(如 string,bytes,tuple,list 或 range)或集合(如字典,set 或 frozenset)。
也可用于实现了 __len__() 方法的任意对象
In [40]: class A:
...: def __len__(self):
...: return 10
In [41]: a = A()
In [42]: len(a)
Out[42]: 10

class list([iterable])

list 不是一个函数,它实际上是一个可变的序列类型。

locals()

更新并返回表示当前本地符号表的字典。在函数块中调用时,locals() 返回自由变量,但不能在类块中调用。
!> 不应该修改其中的内容;更改可能不会影响解释器使用的本地变量和自由变量的值。

map(function, iterable, ...)

返回一个将 function 应用于每个 iterable item 的迭代器,从而产生结果。如果传递额外的 iterable 参数,function 必须采用多个参数并应用于并行所有迭代中的项目。使用多个迭代器时,当最短迭代器耗尽时,迭代器停止。
In [54]: list1 = [1, 2, 3, 4, 5, 6]
...: list2 = [4, 3, 7, 1, 9]
...:
In [55]: list(map(lambda x, y: x+y, list1, list2))
Out[55]: [5, 5, 10, 5, 14]

max

max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])
返回 iterable 中的最大项或两个或更多个参数中最大的项。
如果提供了一个位置参数,它应该是一个 iterable。iterable 中最大的 item 被返回。如果提供了两个或多个位置参数,则返回最大的位置参数。
有两个可选的关键字参数。 key 参数指定一个像 list.sort() 那样的单参数排序函数。如果提供的迭代器为空,则 default 参数指定要返回的对象。如果迭代器为空且未提供缺省值,则会引发 ValueError 。
如果最大值包含多个 item,则该函数返回遇到的第一个 item。这与 sorted(iterable, key=keyfunc, reverse=True)[0] 和 heapq.nlargest(1, iterable, key=keyfunc) 等其他排序工具稳定性保持一致。
In [60]: list1 = [4, 3, 7, 1, 9]
In [61]: max(list1, key=lambda x: -x)
Out[61]: 1
In [62]: max([])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-62-a48d8f8c12de> in <module>()
----> 1 max([])
ValueError: max() arg is an empty sequence
In [63]: max([], default=1)
Out[63]: 1

min

min(iterable, *[, key, default])
min(arg1, arg2, *args[, key])
返回 iterable 中的最小项或两个或更多个参数中的最小项。
如果提供了一个位置参数,它应该是一个 iterable。iterable 中的最小项被返回。如果提供两个或多个位置参数,则返回最小的位置参数。
有两个可选的关键字参数。 key 参数指定一个像 list.sort() 那样的单参数排序函数。如果提供的迭代器为空,则 default 参数指定要返回的对象。如果迭代器为空且未提供缺省值,则会引发 ValueError 。
如果最小值包含多个 item,则该函数返回遇到的第一个 item。这与 sorted(iterable, key=keyfunc, reverse=True)[0] 和 heapq.nlargest(1, iterable, key=keyfunc) 等其他排序工具稳定性保持一致。

next(iterator[, default])

通过调用 __next__() 方法从 iterator 中检索下一个 item。如果给出了 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')

open

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
打开 file 并返回相应的文件对象。如果文件无法打开,则会引发 OSError 。
file 是一个类似路径的对象,它提供要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符。 (如果给出文件描述符,则在返回的 I/O 对象关闭时关闭,除非 closefd 设置为 False 。)
mode 是一个可选字符串,用于指定打开文件的模式。它默认为 'r' ,表示使用文本的方式打开文件来读取。其他常见的值是 'w' 用于写入(如果文件已经存在,则覆盖该文件), 'x' 用于独占创建, 'a' 用于附加(在某些 Unix 系统上,这意味着无论当前的搜索位置如何,所有写操作都会附加到文件末尾)。在文本模式下,如果未指定编码,则使用的编码与平台相关:调用 locale.getpreferredencoding(False) 以获取当前语言环境编码。(为了读取和写入原始字节,使用二进制模式并且不用指定编码)可用的模式有:
字符
含义
'r'
用于读取(默认)
'w'
用于写入,首先覆盖文件
'x'
用于独占创建,如果文件已经存在则失败
'a'
用于写入,追加到文件末尾(如果存在)
'b'
二进制模式
't'
文本模式(默认)
'+'
打开磁盘文件进行更新(读取和写入)
'U'
通用换行符模式(已弃用)
默认模式是 'r' (用于读取文本, 'rt' 的同义词)。对于二进制读写访问,模式 'w+b' 打开并将文件删减为 0 字节。 'r+b' 打开文件而不删减。
如概述中所述,Python 区分二进制和文本 I/O。以二进制模式打开的文件(mode参数中包括 'b' )将内容作为字节对象返回,而不进行任何解码。在文本模式下(默认情况下,或当 't' 包含在 mode 参数中时),文件内容以 str 形式返回,字节首先使用平台相关编码进行解码,或者使用指定的编码(如果给出)。
!> Python 不依赖于底层操作系统的文本文件概念;所有的处理都由 Python 自己完成,因此是平台无关的。

ord(c)

给定一个代表一个Unicode字符的字符串,返回一个表示该字符的 Unicode code 点的整数。例如, ord('a') 返回整数 97, ord('€') (欧元符号)返回 8364。这是 chr() 的逆过程

pow(x, y[, z])

返回 x 的 y 次方;返回 x 的 y 次方再除以 z 的余数(计算效率比 pow(x, y) % z 更高)。双参数形式 pow(x, y) 等价于使用幂运算符: x**y 。

print

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
将 objects 打印到文本流 file 中,以 sep 分隔,然后以 end 结尾。必须将 sep,end,file 和 flush(如果存在)作为关键字参数给出。
所有非关键字参数都会转换为像 str() 那样的字符串并写入流中,由 sep 隔开,然后结束。sep 和 end 都必须是字符串;它们也可以是 None,这意味着使用默认值。如果没有给出对象, print() 将只写入 end。
文件参数必须是带有 write(string) 方法的对象;如果它不存在或是 None,则将使用 sys.stdout 。由于打印的参数会转换为文本字符串, print() 不能用于二进制模式文件对象。对于这些,请改用 file.write(...) 。
输出是否缓冲通常由 file 决定,但如果 flush 关键字参数为 true,则强制刷新流。

property

class property(fget=None, fset=None, fdel=None, doc=None)
返回一个 property 属性。
fget 是获取属性值的函数。fset 是用于设置属性值的函数。fdel 是删除属性值时会调用的函数。doc 为该属性创建一个文档字符串。
典型的用法是定义一个托管属性 x:
class C:
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
如果 c 是 C 的一个实例, c.x 将调用 getx, c.x = value 将调用 setx , del c.x 将调用 delx。
如果给定,doc 将是 property 属性的文档字符串。否则,该属性将复制 fget 的文档字符串(如果存在)。这使得使用 property() 作为装饰器可以轻松创建只读属性:
class Parrot:
def __init__(self):
self._voltage = 100000
@property
def voltage(self):
"""Get the current voltage."""
return self._voltage
@property 修饰器将 voltage() 方法转换为具有相同名称的只读属性的 “getter”,并将 voltage 的文档字符串设置为 “Get the current voltage.” 。
property 对象具有可用作装饰器的 getter,setter 和 deleter 方法,这些方法创建属性的副本并将相应的存取器函数设置为装饰函数。这可以用一个例子来解释:
class C:
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
此代码与第一个示例完全等效。请务必为附加函数提供与原始 property 相同的名称(当前为 x)。
返回的 property 对象也具有与构造函数参数相对应的属性 fget,fset 和 fdel。

range

range(stop)
range(start, stop[, step])
range 不是一个函数,它实际上是一个不可变的序列类型
In [8]: list(range(10))
Out[8]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [9]: list(range(0, 10, 2))
Out[9]: [0, 2, 4, 6, 8]

repr(object)

返回一个包含对象可打印表示的字符串。对于许多类型,此函数尝试返回一个字符串,该字符串在传递给 eval() 时会产生一个具有相同值的对象,否则该表示是一个用尖括号括起来的字符串,其中包含对象类型的名称以及其他信息包括对象的名称和地址。一个类可以通过定义 __repr__() 方法来控制此函数为其实例返回的内容。

reversed(seq)

返回一个反向迭代器。seq 必须是具有 __reversed__() 方法或支持序列协议( __len__() 方法和整数参数从 0 开始的 __getitem__() 方法)的对象。

round(number[, ndigits])

返回在小数点后舍入到精度 ndigits 的 number 。如果 ndigits 被省略或者是 None ,它将返回最接近的整数表示。
对于支持 round() 的内建类型,值舍入到 10 的最接近的负 ndigits 次幂的倍数;如果离两个倍数的距离相等,则舍入选择偶数(因此, round(0.5) 和 round(-0.5) 都是 0,而 round(1.5) 是 2 )。ndigits 可以是任何整数值(正数,零或负数)。如果使用一个参数调用则返回值是一个 integer,否则与 number 的类型相同。
In [10]: type(round(10.9))
Out[10]: int
In [11]: type(round(10.9, 2))
Out[11]: float
对于一般的 Python 对象 xxx, round(xxx, ndigits) 委托给 xxx.__round__(ndigits) 。
!> round() 对于浮点数的行为可能会令人惊讶:例如, round(2.675, 2) 给出 2.67,而不是预期的 2.68。这不是一个 bug:这是由于大多数小数不能完全表示为浮点数的结果。

class set([iterable])

返回一个新的集合对象,可选地使用来自 iterable 的元素。 set 是一个内置的类。

setattr(object, name, value)

它和 getattr() 是一对。参数是一个对象,一个字符串和一个任意值。该字符串可以是现有的属性名或新的属性名。如果该对象允许,该函数将 value 分配给该属性。例如, setattr(x, 'foobar', 123) 等同于 x.foobar = 123 。

slice

class slice(stop)
class slice(start, stop[, step])
返回表示由 range(start, stop, step) 指定的一组索引的切片对象。start 和 step 参数默认为 None 。切片对象具有只读数据属性 start、stop 和 step,它们只返回参数值(或它们的默认值)。他们没有其他明确的功能;然而,它们被 Numerical Python 和其他第三方扩展使用。当使用扩展索引语法时,也会生成切片对象。例如: a[start:stop:step] 或 a[start:stop, i] 。
In [5]: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [6]: s = slice(1, 8, 2)
In [7]: a[s]
Out[7]: [1, 3, 5, 7]

sorted

sorted(iterable, *, key=None, reverse=False)
从 iterable 中的 item 中返回一个新的排序列表。
有两个可选参数,必须将其指定为关键字参数。
key 指定一个带有一个参数的函数,用于从每个列表元素中提取比较键: key=str.lower 。默认值是 None (直接比较元素)。
reverse 是一个布尔值。如果设置为 True ,那么列表元素按照每个比较被颠倒的顺序进行排序。
内置的 sorted() 函数排序是稳定的。如果确保不会更改比较相等的元素的相对顺序,则排序是稳定的 。

@staticmethod

将方法转换为静态方法。
静态方法不会收到隐式的第一个参数。要声明一个静态方法,习惯用法如下:
class C: @staticmethod
def f(arg1, arg2, ...): ...
它可以在类(如 C.f() )或实例(如 C().f() )上调用。
Python 中的静态方法类似于 Java 或 C++ 中的。

str

class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')
返回一个字符串对象

sum(iterable[, start])

从 start 开始,从左到右对 iterable 中的元素求和。 start 默认是 0,迭代的 item 通常是数字,并且不允许 start 的值为字符串。
对于有些情况,有比 sum() 更好的选择, 比如:连接字符串应该用 ''.join(sequence) 。浮点数求和用 math.fsum() 。要连接一系列 iterable,请考虑使用 itertools.chain() 。

super([type[, object-or-type]])

返回一个代理对象,它委托方法给父类或者 type 的同级类。这对于访问类中被覆盖的继承方法很有用。搜索顺序与 getattr() 使用的顺序相同,只不过 type 本身被跳过。
type 的 __mro__ 属性列出 getattr() 和 super() 使用的方法解析顺序。该属性是动态的,并且可以在继承层次结构更新时更改。
如果省略第二个参数,则返回的 super 对象是未绑定的。如果第二个参数是一个对象,则 isinstance(obj, type) 必须为 true。如果第二个参数是类型,则 issubclass(type2, type) 必须为 true(这对类方法很有用)。
super 有两种典型的使用情况。在具有单继承的类层次结构中,可以使用 super 来引用父类,而不必明确命名它们,从而使代码更易于维护。这种使用非常类似于在其他编程语言中 super 的使用。
第二种使用情况是在动态执行环境中支持协同多继承。这种使用情况是 Python 独有的,在静态编译语言或仅支持单继承的语言中找不到。这使得可以实现 “菱形图”,其中多个基类实现相同的方法。良好的设计指出此方法在每种情况下具有相同的调用顺序(因为调用的顺序在运行时确定,因为该顺序适应类层次结构中的更改,并且因为该顺序可以包括在运行时之前未知的兄弟类)。
对于这两种用例,典型的超类调用如下所示:
class C(B):
def method(self, arg):
super().method(arg) # This does the same thing as:
# super(C, self).method(arg)
!> 注意, super() 只实现显式点分属性查找的绑定过程,例如 super().__getitem__(name) 。它通过实现自己的 __getattribute__() 方法来实现这一点,以便以支持协同多继承需要的以可预测的顺序搜索类。因此, super() 没有定义隐式的查找语句或操作,例如 super()[name] 。
!> 另请注意,除了零参数形式外, super() 不限于在方法内部使用。如果两个参数的形式指定了准确的参数,就能进行正确的引用。零参数形式只能在类定义中使用,因为编译器会填充必要的细节以正确检索正在定义的类,以及访问普通方法的当前实例。

tuple([iterable])

tuple 不是一个函数,它实际上是一个不可变的序列类型

type

class type(object)
class type(name, bases, dict)
有一个参数时,返回 object 的类型。返回值是一个类型对象,通常与 object.__class__ 返回的对象相同。
建议使用 isinstance() 内置函数来测试对象的类型,因为它会考虑子类。
有三个参数时,返回一个新的类型对象。这实质上是类声明的一种动态形式。name 字符串是类名,并成为 __name__ 属性;bases 元组逐项列出基类,并成为 __bases__ 属性;dict 是包含类体的定义的命名空间,并被复制到标准字典中以变为 __dict__ 属性。例如,以下两条语句会创建相同的类型对象:
>>> class X:... a = 1
...
>>> X = type('X', (object,), dict(a=1))

vars([object])

返回一个模块、字典、类、实例或者其它任何一个具有 __dict__ 属性的对象的 __dict__ 属性。
模块和实例这样的对象的 __dict__ 属性可以更新;但是其它对象可能对它们的 __dict__ 属性的写操作有限制(例如,类使用 types.MappingProxyType 来阻止对字典直接更新)。
如果不带参数, vars() 的行为就像 locals() 。注意,locals 字典只用于读取,因为对 locals 字典的更新会被忽略。

zip(*iterables)

制作一个迭代器,用于聚合来自每个迭代器的元素。
返回元组的迭代器,其中第 i 个元组包含来自每个参数序列或迭代的第 i 个元素。当最短的输入迭代耗尽时,迭代器停止。使用单个迭代参数,它将返回 1 元组的迭代器。没有参数,它返回一个空的迭代器。相当于:
def zip(*iterables):
# zip('ABCD', 'xy') --> Ax By
sentinel = object()
iterators = [iter(it) for it in iterables]
while iterators:
result = []
for it in iterators:
elem = next(it, sentinel)
if elem is sentinel:
return
result.append(elem)
yield tuple(result)
只有当您不关心后续的,来自较长迭代器的未尾匹配值时,才应该用 zip() 。如果这些值很重要,请改用 itertools.zip_longest() 。
与 * 操作符一起使用 zip() 可用于解压缩列表:
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
True
作者:wcode
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python--内建函数大全 的相关文章

  • 异常检测的总结性介绍

    1 异常检测 1 1 什么是异常值 在机器学习中 异常检测和处理是一个比较小的分支 或者说 是机器学习的一个副产物 因为在一般的预测问题中 模型通常是对整体样本数据结构的一种表达方式 这种表达方式通常抓住的是整体样本一般性的性质 而那些在这
  • python中的一些小trick

    1 set用处 个人之前一直没怎么用过set 直到今天我在写一段代码的时候发现in关键字和set对象简直天生一对 a list if b in a 上面这段代码相信大家都写过 但如果将list对象转换成为set 那么代码速度将大大提升 本质
  • 使用Python实现K均值聚类算法

    使用Python实现K均值聚类算法 K均值聚类算法是一种经典的无监督学习算法 它将数据集分为K个簇 每个簇中的数据点与同一簇中心点的距离最小 不同簇的数据点之间的距离较大 该算法常用于数据挖掘 图像处理等领域 以下是其优缺点和Python实
  • python opencv输出中文的方法 putText 支持中文输出

    python opencv输出中文 opencv在视频中通过putText函数能添加文字 但对于中文则无能为力 一般需要FreeType字体库进行处理 在python可以通过PIL转换一下 现将在视频中添加中文封装成函数如下 def pai
  • Python·Jupyter Notebook各种使用方法

    1 更改Jupyter notebook的工作空间 Jupyter的工作空间在哪里指定 在cmd中输入jupyter notebook generate config 如果该配置文件已经存在 那么 会出现如下信息 从中可以见到配置文件存在的
  • python自动化课程笔记(十三)单例模型、代码性能、抛出异常

    单例模型 重要 class Person object instance None is first True def new cls args kwargs 如果类属性 instance的值为None 创建一个对象 并赋值为这个对象的引用
  • python作业记录1_字典运用的实例

    帮朋友做了几个作业题目 记录一下 一 某人到超市购买了以下物品 先需要对货物金额进行统计 清单如下图所示 牛奶 65 面包 15 可乐 39 饼干 45 糖果 24 水果 35 8 要求 1 使用字典保存以上数据 2 可乐的金额统计出错 请
  • 实习总结3.1(python函数参数)

    python的函数参数 问的比较多的是 args 和 kwargs的区别 参考文章 定义 f a b c 必选参数 f a b c 0 c为默认参数 f a b c 0 args args可选参数 自动组装为tuple f a b c 0
  • Python的PyYAML模块详解

    文章目录 简介 安装 简单安装 从源码安装 最常被问到的问题 使用详解 加载YAML 转储YAML 构造 表示和解析 YAML语法 文档 块序列 块映射 流集合 标量 别名 标签 YAML标签和Python3 对象 字符串转换 名称和模块
  • Python设置excel单元格格式

    文章目录 xlwt 模块简介 设置数字的格式 设置字体 设置对齐方式 设置边框 设置 填充 设置保护 xlwt 模块简介 xlwt 是 python中一个用来操作 excel 文件的库 其中 封装了很多常用操作 本文主要讲解使用该库在生成e
  • Python: 装饰器和语法糖

    一 Python 装饰器 Python 装饰器本身就是一个函数 它的作用是装饰一个其他的函数 但是不改变原有的程序功能 还要增添新的功能 调用函数时的接口没有变化 比如 装修一个房子 如果不隔音 我在墙上加一层隔音板 却不能把墙拆了 换成隔
  • Python 学习笔记(1):心历路程,print()函数,变量和赋值

    也不知道从什么时候开始 对python这个语言有兴趣了 可能是公众号 广告推给我的吧 对python这个语言的印象不错 哈哈 之前大学的时候 对编程就比较感兴趣 反应也还可以 但毕竟不是专门学的 能力不够 毕业之后从事了与专业不相关的工作
  • Python学习笔记 - 阿里云天池Python训练营打卡(3)

    目录 1 阿里云天池Python教程链接 3 2 函数 2 1 函数定义 2 2 函数文档 2 3 help方法 2 4 函数参数 2 5 函数的返回值 2 6 变量作用域 2 7 模块 函数的导入 3 Lambda 匿名函数 3 1 La
  • Python 文件操作(IO)

    文章目录 前言 一 打印到屏幕 print 二 读取键盘输入 1 raw input 2 input 三 读写文件 读文件 写文件 前言 和其它编程语言一样 Python 也具有操作文件 I O 的能力 比如打开文件 读取和追加数据 插入和
  • python基础----02-----字面量、变量、数据类型及其转换、标识符以及字符串、数据输入(input语句)

    一 字面量 1 字面量 字面量 在代码中 被写下来的的固定的值称之为字面量 类似C C 的字符串常量 1 1 常见的python值类型 Python中常见的值类型 实际上在C C 字面量和这里的类型还是有区别的 体现在内存存储中 字面量存储
  • pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

    换了新电脑 在新电脑中安装了pycharm 但是在使用pip install下载相关库时 出现pip 无法将 pip 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 请检查名称的拼写 如果包括路径 请确保路径正确 然后再试一次 的
  • GIS栅格平均值计算

    GIS中批量计算tif栅格文件平均值 coding UTF 8 import arcpy import os inws r C Users DELL Desktop 新建文件夹 arcpy env workspace inws raster
  • python实现常用数据结构

    本文基于Python实现以下几种常用的数据结构 栈 队列 优先队列 二叉树 单链表 双向链表 栈 基于List实现 class Stack 栈 def init self self arr self size 0 def push self
  • Python学习-----起步4(列表元素的添加,删除,修改,查询,获取长度)

    目录 前言 列表元素的添加 或者叫写入 1 append 函数 2 extend 函数 3 insert 函数 列表元素的删除 1 remove 函数 2 pop 函数 3 clear 函数 4 del 方法 这个不是函数哦 列表元素的修改
  • Python中Tkinter 图形化界面设计(详细教程)

    Python Tkinter 图形化界面设计 详细教程 一 图形化界面设计的基本理解 二 窗体控件布局 2 1 根窗体呈现示例 2 2 tkinter 常用控件 2 2 1常用控件 2 2 2 控件的共同属性 2 3 控件布局 2 3 1

随机推荐

  • 2019年秋招多益前端笔试

    2019年秋招多益前端笔试
  • C++ Primer Plus 第一章

    C 简介 C 是在C语言基础上开发的一种集 面向对象编程 泛型编程和传统的过程化编程于一体的编程语言 是C语言的超集 C 面向对象的特性带来了全新的编程方法 这种方法是为应对复杂程度不断提高的现代编程任务而设计的 C 融合了3种不同的编程方
  • uniapp 用 uView 组件库中的u-picker 实现地区的 省-市-区 三级联动

    组件的引入就不多赘述了 直接看使用方法 地址我是引入的json文件数据结构大概是这个样子 例1 例2 1 先做个按钮做弹窗显示
  • linux-malloc底层实现原理

    本文大致讲解一下linux下malloc的底层实现原理 首先malloc肯定是从堆中分配内存 而堆又在用户空间中占据什么位置 通过下面这张图可以看出来 很明显是32位系统 寻址空间是4G linux系统下0 3G是用户模式 3 4G是内核模
  • python itertools模块chain函数功能详解 itertools.chain(*iterable)

    Itertools模块 itertools提供了高效快捷的用于操作迭代对象的函数 通过使用这个模块 可以简化代码 Itertools chain语法 Itertools chain iterables 代表接受可变的参数 iterables
  • 数字图像去噪典型算法及matlab实现

    转自 http gaochaojs blog 51cto com 812546 243961 图像去噪是数字图像处理中的重要环节和步骤 去噪效果的好坏直接影响到后续的图像处理工作如图像分割 边缘检测等 图像信号在产生 传输过程中都可能会受到
  • MAC下如何删除idea

    MAC下如何删除idea 进入访达 点击应用程序列表 找到idea 右键或者拖动到废纸篓 打开终端 进入自己用户名下的Library目录 一般刚打开就在自己用户名下 cd Users 你的用户名 Library 使用cd命令分别进入Logs
  • BUUCTF-EasySQL

    这是一道蛮基础的sql注入的题 打开题目 一个具有黑客色彩的登陆页面 emm 没有注册窗口 在用户名或密码处加个单引号发现报错 判断是字符型注入 通过万能密码登陆注入进去 username admin or 1 1 password 拿到f
  • 出现org.apache.http.NoHttpResponseException

    摘要 spring resttemplate使用httpclient4 4 连接池 出现org apache http NoHttpResponseException 10 0 0 25 8080 failed to respond异常的解
  • YOLOV5加速之TensorRT篇

    之前写过一篇Android版本yolov5s的博客 最近工作搞了下TensorRT 也遇到几个坑不过最终还是实现了 做一下小小的分享 这里直接上github上大牛的连接 我的代码是在他的基础上改的 里面有很多模型的加速直接看里面的yolov
  • 如何利用JS生成二维码

    问题来源 最近在做一个项目 有这么个需求 通过生成二维码来实现网页的分享 问题分析 脑海的第一反应 当然是用js来实现 自己手写 当然不是 解决方案 使用 QRCode js QRCode js 是一个用于生成二维码的 JavaScript
  • Unity 游戏背景音乐突然消失,AudioSource却还在游戏场景中(更新中)

    查看AudioSource isVirtual 是否为True 如果是则音效被系统剔除 音效被系统剔除原因 1 音效某一时刻播放的次数太多
  • BrokenPipeError: [Errno 32] Broken pipe

    BrokenPipeError Errno 32 Broken pipe 前言 今天在训练yolov5 6 1版本 突然出现BrokenPipeError Errno 32 Broken pipe错误 一 运行命令python train
  • Qt5.9.1安装包下载

    一 下载地址 附上百度网盘下载链接链接 https pan baidu com s 1wwvHe5kHwSg68hy1YM6Lhg 提取码 a999 二 安装步骤 选中qt opensource windows x86 5 9 1 exe右
  • xss-工具-Beef-Xss安装以及使用

    Beef Xss工具的简介 KaliLinux官网对这工具的介绍地址 https www kali org tools beef xss GitHub地址 https github com beefproject beef Beef Xss
  • 如何解决stata数据管理器中变量变红的问题

    目标 解决open变量变红的问题 网上说可以通过以下代码解决 实际上是缘木求鱼 encode encode 红色数字的变量名 gen 新产生的变量名 自己尝试用这个代码之后 发现对应变量不是红色了 但变成了蓝色 我开始以为问题已经解决了 但
  • Spring Security,没有看起来那么复杂(附源码)

    权限管理是每个项目必备的功能 只是各自要求的复杂程度不同 简单的项目可能一个 Filter 或 Interceptor 就解决了 复杂一点的就可能会引入安全框架 如 Shiro Spring Security 等 其中 Spring Sec
  • margin:0 auto是什么意思

    margin是外边距的意 当一个元素样式属性里有dumargin 0 auto时 并且父元素的宽度是确定的 意思是这个元素处于其父元素的居中位置 并且这个元素的上下外边距为0 即 上下外边距为0 左右自动 实际效果为左右居中 补充 marg
  • 缺少msvcp120.dll、msvcr120.dll解决办法

    缺少msvcp120 dll msvcr120 dll解决办法 丢失或缺少msvcp120 dll msvcr120 dll等这些报错是因为我们没有安装vc 运行库 看一下报错对应的数字对应的版本 msvcp msvcr60 71和80 d
  • Python--内建函数大全

    Python 解释器内置了许多函数和类型 列表如下 按字母排序 省略了几个我没用过或者不常用的 内建函数表 abs delattr hash memoryview set