前言
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 字符会转义。
- 🗣️ 人话:去汉字化。中文会变成
\u乱码。 - 💻 代码:
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个)
让你的 for 循环骚操作满天飞。
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 个内置函数 全图鉴。熟练使用这些“官方外挂”,能让你的代码从几十行缩减为一行,既优雅又高效。建议收藏本文,作为日常开发的速查字典!
本章有误,请指正,thanks♪(・ω・)ノ
到此这篇关于python3.12内置的71个函数汇总(按用途分类)的文章就介绍到这了,更多相关python3.12内置的函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论