跳到主要内容Python 3.12 内置函数全图鉴:71 个核心工具详解 | 极客日志Python算法
Python 3.12 内置函数全图鉴:71 个核心工具详解
Python 3.12 中的 71 个内置函数,涵盖数学运算、类型转换、逻辑检查、迭代循环、类编译及输入输出六大类别。每个函数均提供官方定义、通俗解释及代码示例,旨在帮助开发者快速掌握核心工具,提升编码效率。
Ne01 浏览 前言
Python 的强大之处在于它自带了丰富的工具箱。截至 Python 3.12 版本,官方提供了 个内置函数。这些函数无需 任何模块即可直接使用。
71
import
为了方便查阅和记忆,本文将这 71 个函数按功能分类,并对每一个函数进行了详细拆解:既有严肃的官方定义,也有通俗易懂的解释,更附带了直接能跑的代码样例。
一、数学与数字运算 (7 个)
1. abs(x)
- 📖 官方:返回一个数的绝对值。
- 🗣️ 人话:去油腻。不管正负,出来全是正能量。
- 💻 代码:
abs(-10) # 10
2. divmod(a, b)
- 📖 官方:将两个数作为参数,返回一对商和余数。
- 🗣️ 人话:小学除法。买 10 个苹果分给 3 个人,每人几个?剩几个?一次搞定。
- 💻 代码:
divmod(10, 3) # (3, 1)
3. max(iterable)
- 📖 官方:返回可迭代对象中的最大项,或两个及以上实参中最大的。
- 🗣️ 人话:卷王。在一堆数里找老大。
- 💻 代码:
max([1, 99, 2]) # 99
4. min(iterable)
- 📖 官方:返回可迭代对象中的最小项,或两个及以上实参中最小的。
- 🗣️ 人话:潜水王。在一堆数里找老幺。
- 💻 代码:
min([1, 99, 2]) # 1
5. pow(base, exp, mod=None)
- 📖 官方:返回
base 的 exp 次幂;如果 mod 存在,则对 mod 取余。
- 🗣️ 人话:指数爆炸。算次方的。第三个参数常用于加密算法(大数取模)。
- 💻 代码:
pow(2, 3) # 8
6. round(number, ndigits=None)
- 📖 官方:返回
number 舍入到小数点后 ndigits 位精度的值。
- 🗣️ 人话:银行家舍入。注意 Python 3 是'奇进偶不进'(四舍六入五取偶)。
- 💻 代码:
round(2.5) # 2
7. sum(iterable, start=0)
- 📖 官方:从
start 开始自左向右对 iterable 的项求和并返回总计值。
- 🗣️ 人话:购物车结算。把列表里的数字加起来。
- 💻 代码:
sum([1, 2, 3]) # 6
二、数据类型转换与创建 (20 个)
负责把对象从一种形态变成另一种形态,俗称'投胎'。
8. bool(x)
- 📖 官方:返回一个布尔值,即
True 或 False。
- 🗣️ 人话:测谎仪。只有
0、None、空容器是 False,其余全是 True。
- 💻 代码:
bool([]) # False
9. int(x)
- 📖 官方:根据一个数字或字符串返回一个整数对象。
- 🗣️ 人话:取整。直接砍掉小数部分,不讲四舍五入。
- 💻 代码:
int(3.99) # 3
10. float(x)
- 📖 官方:返回从数字或字符串生成的浮点数。
- 🗣️ 人话:变小数。加上小数点,身价立马精确了。
- 💻 代码:
float(3) # 3.0
11. complex(real, imag=0)
- 📖 官方:返回值为
real + imag*1j 的复数。
- 🗣️ 人话:变复数。实部 + 虚部,工科生的噩梦。
- 💻 代码:
complex(1, 2) # (1+2j)
12. str(object='')
- 📖 官方:返回
object 的字符串版本。
- 🗣️ 人话:文本化。万物皆可文本化。
- 💻 代码:
str(123) # "123"
13. list(iterable)
- 📖 官方:实际上 list 是一种可变序列类型。
- 🗣️ 人话:装袋子。把能遍历的东西都装进一个列表里。
- 💻 代码:
list("Hi") # ['H', 'i']
14. tuple(iterable)
- 📖 官方:实际上 tuple 是一种不可变序列类型。
- 🗣️ 人话:塑封袋。装进去就拿不出来、改不了的列表。
- 💻 代码:
tuple([1, 2]) # (1, 2)
15. dict(**kwarg)
- 📖 官方:创建一个新的字典。
- 🗣️ 人话:查字典。创建键值对映射。
- 💻 代码:
dict(a=1) # {'a': 1}
16. set(iterable)
- 📖 官方:返回一个新的
set 对象。
- 🗣️ 人话:去重机。丢进去一堆重复的,出来只剩独一无二的。
- 💻 代码:
set([1, 2, 2]) # {1, 2}
17. frozenset(iterable)
- 📖 官方:返回一个新的
frozenset 对象。
- 🗣️ 人话:冻结集合。不能修改的集合,可以当字典的 key。
- 💻 代码:
frozenset([1, 2])
18. bytes(source)
- 📖 官方:返回一个新的'bytes'对象,是一个不可变序列。
- 🗣️ 人话:机器粮。给计算机看的二进制数据,不可变。
- 💻 代码:
bytes([65]) # b'A'
19. bytearray(source)
- 📖 官方:返回一个新的 bytes 数组,可变序列。
- 🗣️ 人话:橡皮泥。可以修改的二进制数据。
- 💻 代码:
bytearray(b"Hi")
20. memoryview(obj)
- 📖 官方:返回由给定实参创建的'内存视图'对象。
- 🗣️ 人话:透视眼。不复制数据直接看内存,处理大文件神器。
- 💻 代码:
v = memoryview(b'abc')
21. bin(x)
- 📖 官方:将一个整数转变为一个前缀为'0b'的二进制字符串。
- 🗣️ 人话:变二进制。
- 💻 代码:
bin(3) # '0b11'
22. oct(x)
- 📖 官方:将一个整数转变为一个前缀为'0o'的八进制字符串。
- 🗣️ 人话:变八进制。
- 💻 代码:
oct(8) # '0o10'
23. hex(x)
- 📖 官方:将整数转换为以'0x'为前缀的小写十六进制字符串。
- 🗣️ 人话:变十六进制。
- 💻 代码:
hex(255) # '0xff'
24. chr(i)
- 📖 官方:返回 Unicode 码位为整数
i 的字符。
- 🗣️ 人话:数字转字符。查表 97 对应'a'。
- 💻 代码:
chr(97) # 'a'
25. ord(c)
- 📖 官方:对表示单个 Unicode 字符的字符串,返回其整数码点。
- 🗣️ 人话:字符转数字。
- 💻 代码:
ord('a') # 97
26. ascii(object)
- 📖 官方:返回一个对象可打印的字符串,非 ASCII 字符会转义。
- 🗣️ 人话:去汉字化。中文会变成
你好 乱码。
- 💻 代码:
ascii('你好') # '\u4f60\u597d'
27. repr(object)
- 📖 官方:返回包含一个对象的可打印表示形式的字符串。
- 🗣️ 人话:卸妆水。给开发者看的原始字符串,通常带引号。
- 💻 代码:
repr("1") # "'1'"
三、逻辑检查与反射 (15 个)
最喜欢打听'你是谁?''你有什么?''你行不行?'
28. all(iterable)
- 📖 官方:如果
iterable 的所有元素为真,返回 True。
- 🗣️ 人话:全票通过。全是 True 才是 True。
- 💻 代码:
all([True, 1]) # True
29. any(iterable)
- 📖 官方:如果
iterable 的任一元素为真则返回 True。
- 🗣️ 人话:滥竽充数。只要有一个是 True,结果就是 True。
- 💻 代码:
any([0, 1]) # True
30. callable(object)
- 📖 官方:如果参数
object 是可调用的,返回 True。
- 🗣️ 人话:能喊吗。屁股后面能不能加括号
() 运行它?
- 💻 代码:
callable(print) # True
31. isinstance(object, classinfo)
- 📖 官方:如果参数
object 是参数 classinfo 的实例,返回 True。
- 🗣️ 人话:查户口。判断你是不是某种类型。
- 💻 代码:
isinstance(5, int) # True
32. issubclass(class, classinfo)
- 📖 官方:如果
class 是 classinfo 的子类,返回 True。
- 🗣️ 人话:查祖宗。判断一个类是不是另一个类的后代。
- 💻 代码:
issubclass(bool, int) # True
33. type(object)
- 📖 官方:返回
object 的类型。
- 🗣️ 人话:照妖镜。看你到底是个什么东西。
- 💻 代码:
type([]) # <class 'list'>
34. len(s)
- 📖 官方:返回对象的长度(元素个数)。
- 🗣️ 人话:量尺。量量你有多少货。
- 💻 代码:
len("Hi") # 2
35. id(object)
- 📖 官方:返回对象的'标识值',通常是内存地址。
- 🗣️ 人话:身份证号。
- 💻 代码:
id(x)
36. hash(object)
- 📖 官方:返回该对象的哈希值(如果它有的话)。
- 🗣️ 人话:数字指纹。用于字典快速查找。
- 💻 代码:
hash("hi")
37. dir(object)
- 📖 官方:返回该对象的有效属性列表。
- 🗣️ 人话:扒皮。看看这个对象肚子里都有啥属性和方法。
- 💻 代码:
dir(str)
38. vars(object)
- 📖 官方:返回对象的
__dict__ 属性。
- 🗣️ 人话:偷看日记。把对象的属性以字典形式显示出来。
- 💻 代码:
vars(obj)
39. hasattr(object, name)
- 📖 官方:如果字符串是对象的属性之一的名称,则返回
True。
- 🗣️ 人话:你有吗。
- 💻 代码:
hasattr(str, 'upper') # True
40. getattr(object, name)
- 📖 官方:返回对象命名属性的值。
- 🗣️ 人话:给我拿。动态获取属性值。
- 💻 代码:
getattr(obj, 'x')
41. setattr(object, name, value)
- 📖 官方:设置属性值。
- 🗣️ 人话:给你塞。动态给对象增加或修改属性。
- 💻 代码:
setattr(obj, 'x', 10)
42. delattr(object, name)
- 📖 官方:删除该属性。
- 🗣️ 人话:给你扔。动态删除属性。
- 💻 代码:
delattr(obj, 'x')
四、迭代与循环 (12 个)
43. range(start, stop, step)
- 📖 官方:实际上是一个不可变的序列类型。
- 🗣️ 人话:造数机。生成一串数字序列,循环最爱。
- 💻 代码:
list(range(3)) # [0, 1, 2]
44. enumerate(iterable, start=0)
- 📖 官方:返回一个枚举对象。
- 🗣️ 人话:带号上岗。遍历时顺便给你标上序号。
- 💻 代码:
list(enumerate(['a'])) # [(0, 'a')]
45. zip(*iterables)
- 📖 官方:在多个迭代器上并行迭代,返回元组。
- 🗣️ 人话:拉链。把两个列表对应位置缝在一起。
- 💻 代码:
list(zip([1], ['a'])) # [(1, 'a')]
46. filter(function, iterable)
- 📖 官方:用函数返回真的那些元素构建迭代器。
- 🗣️ 人话:筛子。只保留满足条件的。
- 💻 代码:
list(filter(bool, [0, 1])) # [1]
47. map(function, iterable)
- 📖 官方:将函数应用于每一项并输出其结果。
- 🗣️ 人话:批量加工厂。给列表里每个元素都来一刀。
- 💻 代码:
list(map(str, [1, 2])) # ['1', '2']
48. sorted(iterable)
- 📖 官方:根据项返回一个新的已排序列表。
- 🗣️ 人话:整理狂。返回一个排好序的新列表。
- 💻 代码:
sorted([2, 1]) # [1, 2]
49. reversed(seq)
- 📖 官方:返回一个反向的迭代器。
- 🗣️ 人话:倒带。倒着读。
- 💻 代码:
list(reversed([1, 2])) # [2, 1]
50. iter(object)
- 📖 官方:返回一个迭代器对象。
- 🗣️ 人话:手动挡。把列表变成迭代器。
- 💻 代码:
it = iter([1, 2])
51. next(iterator)
- 📖 官方:从迭代器中获取下一项。
- 🗣️ 人话:挤牙膏。挤一下出一个,没货了报错。
- 💻 代码:
next(it)
52. slice(start, stop, step)
- 📖 官方:返回一个切片对象。
- 🗣️ 人话:手术刀。把
[0:5] 这种切片操作存成变量。
- 💻 代码:
s = slice(0, 1)
53. aiter(async_iterable)
- 📖 官方:返回异步迭代器。
- 🗣️ 人话:异步手动挡。给
async for 用的底层工具。
- 💻 代码:
aiter(obj)
54. anext(async_iterator)
- 📖 官方:从异步迭代器返回下一项。
- 🗣️ 人话:异步挤牙膏。
- 💻 代码:
await anext(it)
五、类、编译与底层 (7 个)
55. property(fget=None, ...)
- 📖 官方:返回一个 property 属性。
- 🗣️ 人话:伪装者。把方法伪装成属性,调用时不用加括号。
- 💻 代码:
@property
56. classmethod(function)
- 📖 官方:把一个方法封装成类方法。
- 🗣️ 人话:班干部。绑定到类而不是实例。
- 💻 代码:
@classmethod
57. staticmethod(function)
- 📖 官方:将方法转换为静态方法。
- 🗣️ 人话:房客。寄宿在类里的普通函数,跟类没啥深层关系。
- 💻 代码:
@staticmethod
58. super()
- 📖 官方:返回一个代理对象,将调用委托给父类。
- 🗣️ 人话:找爸爸。调用父类的方法。
- 💻 代码:
super().__init__()
59. object()
- 📖 官方:返回一个不带特征的新对象,所有类的基类。
- 🗣️ 人话:亚当。Python 所有对象的祖宗。
- 💻 代码:
o = object()
60. compile(source, ...)
- 📖 官方:将源字符串编译成代码或 AST 对象。
- 🗣️ 人话:翻译官。把字符串代码编译成字节码。
- 💻 代码:
compile("print(1)", "", "exec")
61. import(name)
- 📖 官方:此函数会由
import 语句发起调用。
- 🗣️ 人话:底层召唤术。
import 背后的真身,一般人用不到。
- 💻 代码:
__import__('os')
六、输入输出与系统环境 (10 个)
62. input(prompt)
- 📖 官方:从输入中读取一行。
- 🗣️ 人话:要饭。程序暂停,伸手管用户要输入。
- 💻 代码:
name = input("Who?")
63. print(*objects)
- 📖 官方:将
objects 打印到文本流。
- 🗣️ 人话:大喇叭。新手唯一的调试工具。
- 💻 代码:
print("Hello")
64. open(file, mode)
- 📖 官方:打开文件并返回 file object。
- 🗣️ 人话:开门。操作文件。
- 💻 代码:
f = open('t.txt', 'r')
65. help(object)
- 📖 官方:启动内置的帮助系统。
- 🗣️ 人话:救命。弹出官方文档。
- 💻 代码:
help(list)
66. breakpoint()
- 📖 官方:此函数会在调用点进入调试器。
- 🗣️ 人话:暂停键。代码跑到这会自动卡住,进入调试模式。
- 💻 代码:
breakpoint()
67. globals()
- 📖 官方:返回实现当前模块命名空间的字典。
- 🗣️ 人话:全局大查房。看看全局变量有哪些。
- 💻 代码:
globals()
68. locals()
- 📖 官方:返回表示当前本地符号表的字典。
- 🗣️ 人话:局部小查房。看看当前函数里有哪些变量。
- 💻 代码:
locals()
69. format(value, format_spec)
- 📖 官方:将
value 转换为'格式化后'的表示形式。
- 🗣️ 人话:美颜相机。保留几位小数?左对齐还是右对齐?
- 💻 代码:
format(3.14, '.1f') # '3.1'
70. eval(expression)
- 📖 官方:对
expression 参数进行求值。
- 🗣️ 人话:计算器。把字符串当成一行代码算出来。危险!
- 💻 代码:
eval("1+1") # 2
71. exec(object)
- 📖 官方:此函数支持动态执行 Python 代码。
- 🗣️ 人话:执行官。比
eval 更狠,能运行一整段代码。极度危险!
- 💻 代码:
exec("print('Hi')")
总结
以上就是 Python 3.12 的 71 个内置函数 全图鉴。熟练使用这些'官方外挂',能让你的代码从几十行缩减为一行,既优雅又高效。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown 转 HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
- HTML 转 Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online