Python3.9的69个内置函数(内建函数)介绍,并附简单明了的示例代码
Posted 昊虹图像算法
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3.9的69个内置函数(内建函数)介绍,并附简单明了的示例代码相关的知识,希望对你有一定的参考价值。
Python 解释器内置(内建)了很多函数,这篇博文对它们进行逐一介绍,博主觉得有必要给出示例代码的会给出示例代码。
声明:博主(昊虹图像算法)写这篇博文时,用的Python的版本号为3.9.10。
官方文档:https://docs.python.org/zh-cn/3.9/library/functions.html#built-in-functions
说明:官方文档里列出了14*5-1=59个内置函数,但博主认为classmethod、staticmethod、property这三个更像是定义类的三个关键字,故没在这篇博文中进行介绍,如果要看这三个的介绍,可参考我的另一篇博文,链接 https://blog.csdn.net/wenhao_ir/article/details/125383895
这篇博文中反复提到了可迭代对象的概论,那么什么是可迭代对象呢?
列表、元组、字典和集合就是典型的可迭代对象,这些对象都包含方法 __iter__() 或__next__()。可迭代对象的元素能够通过其内部的方法 __iter__() 或 __next__()进行遍历。
目录
- 01-函数abs():返回一个数的绝对值
- 02-函数all():判断可迭代对象是否所有元素为True
- 03-函数any():判断可迭代对象是否有一个以上元素为True
- 04-函数ascii():返回任何对象(字符串、元组、列表等)的ASCII码打印(可读)版本
- 05-函数bin():返回一个整数的二进制表示(这个二进制表示是字符串对象)
- 06-函数bool():返回对象的bool值(布尔值)
- 07-函数breakpoint():此函数在调用时将使程序陷入调试器中
- 08-函数bytearray():返回单字节数组
- 09-函数callable():测试对象是否能被调用
- 10-函数chr():返回代表指定unicode码值的字符
- 11-函数compile():将字符串代码编译成可运行的代码对象
- 12-函数complex():通过指定复数的实部和虚部来得到复数
- 13-函数delattr():从指定的对象中删除指定的属性属性或方法
- 14-函数dict():创建字典
- 15-函数dir():查询一个类或一个对象有哪些属性(方法(成员函数)、变量))
- 16-函数divmod():返回除法的商和余数
- 17-函数enumerate():将可迭代对象转化为枚举对象
- 18-函数eval():执行函数compile()后的代码对象
- 19-函数exec():执行函数compile()后的代码对象
- 20-函数filter():过滤掉可迭代对象中不符合条件的元素
- 21-函数float():将整数或字符串转换成浮点数
- 22-函数format():字符串格式化函数
- 23-函数frozenset():返回一个被冻结的可迭代对象
- 24-函数getattr():获取对象的某个属性的值
- 25-函数globals():返回程序当前运行位置的所有全局变量
- 26-函数hasattr():判断对象是否具有某属性
- 27-函数hash():获取对象(通常为字符的哈希值
- 28-函数help():用于查看函数、类、对象等的说明
- 29-函数hex():返回一个数字的16进制表示
- 30-函数id():返回对象的id(内存地址)
- 31-函数input():接受输入数据(如来自键盘的输入),返回string类型
- 32-函数int():将浮点数或字符串转换为整数
- 33-函数isinstance():判断一个对象是否是某个类的实例
- 34-函数issubclass():判断某个类是否是另一个类的子类
- 35-函数iter():用于生成可迭代对象的迭代器对象
- 36函数len():返回对象(字符串、列表、元组、字典、集合等)的长度
- 37-函数list():用于将元组或字符串转换为列表
- 38-函数locals():返回程序前当前运行位置的局部变量
- 39-函数map():将某可迭代对象通过某一函数映射到另一迭代对象
- 40-函数max():返回给定参数的最大值
- 41-函数memoryview():返回给定参数的内存查看对象(memory view)
- 42-函数min():返回给定参数的最小值
- 43-函数next():返回迭代器的下一个项目
- 44-函数object():创建一个空的对象
- 45-函数oct():将一个整数转换成 8 进制字符串
- 46-函数open():打开一个文件,并返回文件对象
- 47-函数ord():返回字符的ASCII 数值或者Unicode数值
- 48-函数pow():返回x的y次方值,还可对结果作取余除法
- 49-函数print():打印输出对象
- 50-函数property():获取、设置、删除类的某个属性
- 51-函数range():返回一个可迭代对象
- 52-函数repr(): 将对象字符串化(文本化)【repr应该是return print的缩写】
- 53-函数reversed():获得对象的反转迭代器(作用就是反转迭代器)
- 54-函数round():返回浮点数的五舍六入值(可控制小数位数)
- 55-函数set():创建集合对象
- 56-函数setattr():设置对象的属性值
- 57- 函数slice():辅助切片操作
- 58-函数sorted():对可迭代对象的元素进行排序操作
- 59-函数str():将对象转化为string对象(字符串对象)
- 60-函数sum():对可迭代对象求和
- 61-函数super():用于提供对父类或同胞类的方法和属性的访问
- 62-函数tuple():把可迭代对象转换为元组
- 63-函数type():返回对象的类型
- 64-函数vars():返回类的 \\_\\_dic\\_\\_ 属性
- 65-函数zip():打包多个可迭代对象
- 66-函数\\_\\_import\\_\\_():导入模块、脚本、类和函数等
01-函数abs():返回一个数的绝对值
abs(x)
返回一个数的绝对值。 参数可以是整数、浮点数或任何实现了 __abs__() 的对象。 如果参数是一个复数,则返回它的模。
这个的示例代码就不给了。
02-函数all():判断可迭代对象是否所有元素为True
什么叫可迭代对象?列表、元组、字典和集合就是典型的可迭代对象,这些对象都包含方法 __iter__() 和 __next__()。可迭代对象的元素能够通过其内部的方法 __iter__() 和 __next__()进行遍历。
那么元素对象满足什么条件为True呢?可参考我的另一篇博文 https://blog.csdn.net/wenhao_ir/article/details/125439660
注意:按道理,空元组、空列表的布尔值为False,所以对于空元组、空列表,函数all()应该返回False才对,但事实并不是这样,对于空元组、空列表函数all()的返回值也为True,这一点要特别注意。
示例代码如下:
list1 = [1, 2, 3]
list2 = [-1, 2, 3]
list3 = [0, 2, 3]
list4 = []
bool1 = all(list1)
bool2 = all(list2)
bool3 = all(list3)
bool4 = all(list4)
运行结果如下:
03-函数any():判断可迭代对象是否有一个以上元素为True
什么叫可迭代对象?列表、元组、字典和集合就是典型的可迭代对象,这些对象都包含方法 __iter__() 和 __next__()。
any() 函数用于判断可迭代对象是否有一个以上元素为True,如果有一个为 True,则返回 True;如果全部为False,则返回 False。
那么元素对象满足什么条件为True呢?可参考我的另一篇博文 https://blog.csdn.net/wenhao_ir/article/details/125439660
注意:对于函数any()而言,空元组、空列表返回值为False。
示例代码如下:
list1 = [0, '', False, None]
list2 = [-1, 2, 3]
list3 = [0, 2, 3]
list4 = []
bool1 = any(list1)
bool2 = any(list2)
bool3 = any(list3)
bool4 = any(list4)
运行结果如下:
04-函数ascii():返回任何对象(字符串、元组、列表等)的ASCII码打印(可读)版本
函数ascii()返回任何对象(字符串、元组、列表等)的可读版本,有点类似于把对象强制转换为ASCII码字符串,它会将非ASCII字符替换为转义字符。
上面这句话不太好理解,看一个示例代码就知道了。
示例代码如下:
x1 = ascii('My name is Ståle')
print(x1)
x2 = ascii([77, 88, 'swh'])
print(x2)
运行结果如下:
这里要注意x1中的“\\xe5”是怎么回事?那是因为在ASCII码中没有字符å ,所以将其替换成了 \\xe5
另外, 我们看到字符串的前后的引号也被转换成了字符。
05-函数bin():返回一个整数的二进制表示(这个二进制表示是字符串对象)
示例代码如下:
x1 = bin(10)
print(x1)
运行结果如下:
06-函数bool():返回对象的bool值(布尔值)
关于函数bool(),请参见我的另一篇博文 https://blog.csdn.net/wenhao_ir/article/details/125439660
07-函数breakpoint():此函数在调用时将使程序陷入调试器中
这个函数是3.7 版之后才有的,使用频率也不高,暂时不做过多介绍。
08-函数bytearray():返回单字节数组
函数bytearray()的语法如下:
bytearray([source[, encoding[, errors]]])
参数介绍:
如果 source 为整数,则返回一个长度为 source 的初始化数组;
如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
如果 source 为可迭代类型,因为每个元素的存储空间只有一个字节,则元素必须为[0 ,255] 中的整数;
如果没有输入任何参数,默认就是初始化数组为0个元素。
示例代码如下:
bytearray0 = bytearray()
bytearray1 = bytearray(5)
bytearray2 = bytearray('suwenhao', 'utf-8')
bytearray3 = bytearray([65, 66, 67])
运行结果如下:
从上面的运行结果我们可以看出:
①长度为 source 的初始化数组的元素的默认值为\\x00
②显示是以ASCII码来显示其值的,所以bytearray3的三个数被显示为了大写的字母ABC。
09-函数callable():测试对象是否能被调用
如果指定的对象是可调用的,则返回 True,否则返回 False。
注意:如果函数callable()返回True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。
对于函数、方法、lambda 匿名函数、 类以及实现了 __call__ 方法的类实例, 它都会返回 True。
示例代码如下:
def add(a_p, b_p):
return a_p + b_p
class A:
def method(self):
return 0
class B:
def __call__(self):
return 0
bool1 = callable(0) # 对象0不可被调用,所以应该返回False
bool2 = callable(add) # 函数add返回True
bool3 = callable(A) # 类A返回True
a = A()
bool4 = callable(a) # 类A的实例化对象a没有实现__call__,所以应该返回False
bool5 = callable(B) # 类B返回True
b = B()
bool6 = callable(b) # 类B的实例化对象b实现了__call__,所以应该返回True
运行结果如下:
10-函数chr():返回代表指定unicode码值的字符
函数chr( i )返回 Unicode 码位为整数 i 的字符的字符串格式。例如,chr(97) 返回字符串 ‘a’,chr(8364) 返回字符串 ‘€’。
i — 可以是 10 进制也可以是 16 进制的形式的数字,数字范围为 0 到 1,114,111 (16 进制为0x10FFFF)。
示例代码如下:
char1 = chr(97)
char2 = chr(8364)
运行结果如下:
另外,可用使用函数ord()返回字符的ASCII 数值或者Unicode数值,详情见本文的第47个函数。
11-函数compile():将字符串代码编译成可运行的代码对象
函数compile()的作用将字符串代码编译成可运行的代码对象。
看了上面这句话通常还是不知道它干了啥。没关系,看一下示例代码就知道了。
示例代码如下:
a1 = 188
x = compile('print(a1)', 'jhoij', 'eval')
eval(x)
运行结果如下:
从上面的示例代码我们可以看出,当对语句 print(a1) 执行了形式为eval的compile操作后,得到了对象x,此时用eval()函数调用对象x,就相当于执行了语句print(a1)。
那这样的操作有什么意义呢?
网上查到一个观点如下:
当执行字符串形式的代码时,每次都必须对这些代码进行字节编译处理。compile()函数提供了一次性字节代码预编译,以后每次调用的时候,都不用编译了。
但是博主(昊虹君)觉得这个说法有点问题,从上面的例子来看,每次运行这个脚本的时候还是会去执行一次compile()函数,那还是每次都去编译了啊,除非它的结果被缓存在某个地方。
compile()函数语法如下:
compile(source, filename, mode[, flags[, dont_inherit,[ optimize]]])
参数意义如下:
12-函数complex():通过指定复数的实部和虚部来得到复数
复数是Python中数值类型的一种。可以用函数complex()通过指定复数的实部和虚部来得到复数。
示例代码如下:
z1 = complex(7, 8)
print(z1)
运行结果如下:
13-函数delattr():从指定的对象中删除指定的属性属性或方法
语法如下:
delattr(object, name)
object – 对象。
name – 必须是对象的属性。
示例代码如下:
class Coordinate:
x = 10
y = -5
z = 0
point1 = Coordinate()
print('x = ', point1.x)
print('y = ', point1.y)
print('z = ', point1.z)
delattr(Coordinate, 'z')
print('--删除 z 属性后--')
print('x = ', point1.x)
print('y = ', point1.y)
# 触发错误
print('z = ', point1.z)
运行结果如下:
14-函数dict():创建字典
函数dict()的详情请参见博文 https://blog.csdn.net/wenhao_ir/article/details/125412774 的“01-附2”
15-函数dir():查询一个类或一个对象有哪些属性(方法(成员函数)、变量))
函数dir()的详情请参见博文 https://blog.csdn.net/wenhao_ir/article/details/125421060
16-函数divmod():返回除法的商和余数
函数divmod()的语法如下:
divmod(a, b)
如果参数 a 与 参数 b 都是整数,函数返回的结果相当于 (a // b, a % b)。
如果其中一个参数为浮点数时,函数返回的结果相当于 (q, a % b),q 通常是 math.floor(a / b),函数会使 q * b + a % b近可能接近于a。
余数的符号与除数相同。
注意:当被除数和除数是异号的整数时,余数只有三个值,当能整除时,余数为0;当不能整除时,若除数为负数,余数为-1,若除数为正数,余数为1。
示例代码如下:
# 被除数和除数都是正数的情况
a1 = 13
b1 = 5
c01 = divmod(a1, b1)
# 被除数和除数都是负数的情况
a2 = -14
b2 = -5
c02 = divmod(a2, b2)
# 被除数是正数,除数是负数的情况
a3 = 14
b3 = -5
c03 = divmod(a3, b3)
# 被除数是负数,除数是正数的情况
a4 = -14
b4 = 5
c04 = divmod(a4, b4)
# 验证被除数是正数,除数是负数时,结果是否为-1
a5 = 23
b5 = -6
c05 = divmod(a5, b5)
# 验证被除数是负数,除数是正数时,结果是否为+1
a6 = -23
b6 = 6
c06 = divmod(a6, b6)
# 验证被除数是正数,除数是负数且能整除时,结果是否为0
a7 = -24
b7 = 6
c07 = divmod(a7, b7)
# 验证被除数是负数,除数是正数且能整除时,结果是否为0
a8 = -24
b8 = 6
c08 = divmod(a8, b8)
# 被除数是正的浮点数,除数是正的整数的情况
a9 = 5.3
b9 = 2
c09 = divmod(a9, b9)
# 被除数是负的浮点数,除数是负的整数的情况
a10 = -5.3
b10 = -2
c10 = divmod(a10, b10)
# 被除数是负的浮点数,除数是正的整数的情况
a11 = -5.3
b11 = 2
c11 = divmod(a11, b11)
# 被除数是正的浮点数,除数是负的整数的情况
a12 = 5.3
b12 = -2
c12 = divmod(a12, b12)
# 被除数是整数,除数是浮点数的情况
a13 = 6
b13 = -2.2
c13 = divmod(a13, b13)
# 被除数是浮点数,除数也是浮点数的情况
a14 = 6.8
b14 = -2.2
c14 = divmod(a14, b14)
运行结果如下:
17-函数enumerate():将可迭代对象转化为枚举对象
关于函数enumerate()的详细介绍,请参见我的另一篇博文:https://blog.csdn.net/wenhao_ir/article/details/125443427
18-函数eval():执行函数compile()后的代码对象
详见对函数compile()的介绍,具体来说是这篇博文中的第11个。
19-函数exec():执行函数compile()后的代码对象
20-函数filter():过滤掉可迭代对象中不符合条件的元素
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
示例代码如下:
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)
运行结果如下:
这个函数与列表(list)的方法sort()的第一个参数key的使用挺类似的,详情见博文https://blog.csdn.net/wenhao_ir/article/details/125406092
21-函数float():将整数或字符串转换成浮点数
什么?字符串也可以转换成浮点数,是的,你没看错,看下面的示例你就知道了。
int1 = 112
str1 = '123'
float_1 = float(int1)
float_2 = float(str1)
运行结果如下:
从上面的运行结果我们可以看出,字符串’123’被转换成了浮点数123.0,这就是Python的灵活之处,同样的功能,在C++中则需要使用类stringstream来实现,详情见我的另一篇博文 https://blog.csdn.net/wenhao_ir/article/details/124508457
22-函数format():字符串格式化函数
关于函数format(),我已在博文https://blog.csdn.net/wenhao_ir/article/details/125390532中详细介绍过,这里就不再重复介绍了。
23-函数frozenset():返回一个被冻结的可迭代对象
函数frozenset()用于由原可迭代对象返回一个被冻结的可迭代对象,处于冻结状态的可迭代对象不能添加或删除任何元素。
示例代码如下:
list1 = ['Google', 'CSDN', 'tencent', 1997, 1999, 1998]
list2 = frozenset(list1)
list2[0] = 'facebook'
运行结果如下:
24-函数getattr():获取对象的某个属性的值
示例代码如下:
class A(object):
bar = 1
a1 = A()
b1 = getattr(a1, 'bar')
运行结果如下:
如果您想设置对象的属性值,可以用函数setattr()来设置哦!函数setattr()见本篇博文第56个函数
25-函数globals():返回程序当前运行位置的所有全局变量
globals() 函数会以字典类型返回当前位置的全部全局变量。
示例代码如下:
str1 = 'suwenhao'
int1 = 1990
list1 = [1, 2, 3]
global_variable = globals()
运行结果如下:
26-函数hasattr():判断对象是否具有某属性
函数hasattr()的示例代码如下:
class Coordinate:
x = 10
y = -5
z = 0
point1 = Coordinate()
bool1 = hasattr(point1, 'x')
bool2 = hasattr(point1, 'y')
bool3 = hasattr(point1, 'z')
bool4 = hasattr(point1, 'no') # 没有该属性
运行结果如下:
27-函数hash():获取对象(通常为字符的哈希值
示例代码如下:
hash1 = hash('swh')
hash2 = hash(2487872782)
将上面的代码运行两次,结果分别如下:
第一次的运行结果:
第二次运行的结果:
从上面两次的运行结果我们可以看出,一个字符串的hash值并不是唯一的,整数的hash值还是其本身。
28-函数help():用于查看函数、类、对象等的说明
示例代码如下:
help('sys') # 查看sys模块的帮助
help('str') # 查看str类的帮助
a = [1, 2, 3]
help(a) # 查看列表list的帮助
help(a.append) # 查看list的append方法的帮助
下面两行代码
a = [1, 2, 3]
help(a.append) # 查看list的append方法的帮助
的运行结果如下:
29-函数hex():返回一个数字的16进制表示
示例代码如下:
hex1 = hex(10)
运行结果如下:
注意:函数hex()返回的是一个字符串对象。
30-函数id():返回对象的id(内存地址)
示例代码如下:
str1 = 'CSDN'
id1 = id(str1)
运行结果如下:
31-函数input():接受输入数据(如来自键盘的输入),返回string类型
示例代码如下:
str1 = input("input:")
运行结果如下:
第一次运行(输入字符串):
第二次运行(输入数字)
从第二次的运行结果我们可以看出,输入的数字也被当成字符串处理了。不过不要紧,我们可以用函数float()或函数int()将字符串型数字转化为float型和int型嘛。
32-函数int():将浮点数或字符串转换为整数
语法如下:
int(x, base=10)
参数意义:
x – 字符串或数字。
base – 代表x为哪种进制的数,注意不是表示返回傎的进制
示例代码如下:
int1 = int(3.6)
int2 = int('20')
int3 = int('12', 16) #16进制的12换算成10进制是18
int4 = int('0xa', 16)
运行结果如下:
从上面的运行结果可以看出,函数int()在将浮点数转换为整数时,对于小数部分是直接舍弃处理的,而不是四舍五入。
33-函数isinstance():判断一个对象是否是某个类的实例
示例代码如下:
a = 2
bool1 = isinstance(a, int)
bool2 = isinstance(a, str)
bool3 = isinstance(a, (str, int, list)) # 只要是元组中的一个就返回True
运行结果如下:
34-函数issubclass():判断某个类是否是另一个类的子类
语法如下:
issubclass(class1, class2)
如果 class1 是 class2 的子类返回 True,否则返回 False。
示例代码如下:
class A:
pass
class B(A):
pass
class C:
pass
bool1 = issubclass(B, A)
bool2 = issubclass(B, C)
运行结果如下:
35-函数iter():用于生成可迭代对象的迭代器对象
这个函数用于生成可迭代对象的迭代器对象。以list对象为例,如果我们想通过迭代器遍历它,怎么操作呢?方法之一就是先生成其迭代器对象,然后用内置函数next()进行遍历操作。
内置函数next()的语法如下:
next(iterable[, default])
iterable – 可迭代对象
default – 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。
再看函数iter()的语法:
iter(object[, sentinel])
根据是否存在第二个实参,第一个实参的解释是非常不同的。
如果没有第二个实参,object 必须是支持迭代协议(有 __iter__() 方法)的集合对象(比如列表、元组、集合都是有 __iter__() 方法的,博文https://blog.csdn.net/wenhao_ir/article/details/125421060的第一个示例代码的运行结果便证明了这一点),或必须支持序列协议(有 __getitem__() 方法,且数字参数从 0 开始)。如果它不支持这些协议,会触发 TypeError。
如果有第二个实参 sentinel,那么 object 必须是可调用的对象。这种情况下生成的迭代器,每次迭代调用它的 __next__() 方法时都会不带实参地调用 object;如果返回的结果是 sentinel 则触发 StopIt
以上是关于Python3.9的69个内置函数(内建函数)介绍,并附简单明了的示例代码的主要内容,如果未能解决你的问题,请参考以下文章