
内置函数不用 import,Python 装好就能用,这是它与标准库、第三方库最大的区别。也正因为来得太容易,多数人对它的认识停留在 len 和 print,其余几十个要么没碰过,要么只在报错信息里见过名字。官方文档收录了七十多个内置函数,日常开发真正高频出场的,数下来三十个上下。
类型转换,八个函数
写 Python 绕不开类型转换:接口进来的是字符串,算完要写回数字,容器之间常常要互相倒手。这一组八个函数覆盖了绝大多数转换需求,也是初学者报错最密集的区域——多数转换失败的原因只有一个:传入的东西本身转不成目标类型,函数没有义务替你猜。转换类函数的通用规矩是先确认输入长什么样,再决定转不转,盲转的结果就是下一行的异常。转换失败并不丢人,真正的风险是转换成功但语义不对:'007' 转成整数得到 7,前导零无声消失,这类错误不报异常,只在几小时后对不上账时才暴露。
int(x)。 把字符串或浮点数转成整数,小数部分直接截断,int("42") 得 42,int(3.9) 也得 3。想要四舍五入请用 round,想要解析二进制或十六进制传第二参数,int("ff", 16) 得 255。
float(x)。 字符串转浮点数,float("3.14") 得 3.14。它对格式很挑剔,带逗号或百分号的数字串会直接报错,转换前先清洗。
str(x)。 万物皆可转字符串,但转出来的只是给人看的表示。拼接日志、组装提示用它没有问题;涉及数字运算,转回去还得 int 或 float 一趟。
bool(x)。 把任何对象转成真或假。空容器、零、None 都是假,其余为真。多数场景其实不需要显式转换,if 直接写对象就行。
list(x)。 接受任何可迭代对象,返回新列表。字符串会拆成单字符列表,字典得到的是键列表,这两个行为初学时容易出乎意料。
int("42"), int(3.9), int("ff", 16) # (42, 3, 255)
float("3.14") # 3.14
str(42), list("abc"), list({"k": 1}) # ('42', ['a','b','c'], ['k'])
tuple(x) 与 set(x)。 前者把可迭代对象固化成元组,后者顺带去重。set 是去重的最快写法,但顺序会丢,需要保留出现顺序时用 dict.fromkeys(x) 再取键,字典会记住键的插入顺序,这是 3.7 之后的标准做法。
dict(x)。 从键值对序列构造字典,配 zip 使用最顺:dict(zip(keys, values)) 两行变一行,这是组装字典的惯用法之一。
数学计算,五个函数
五个函数都不需要额外导入,直接调用就是,性能也是纯函数里最快的一档,能用它们组合出来的计算,不必绕去写循环。它们的输入要么是单个数值要么是可迭代对象,跟列表推导式组合起来能覆盖大部分轻量统计需求,求和、计数、极值三件事一行一个,不必引入任何库,也不必为小数据起 pandas。
abs(x)。 绝对值,整数浮点复数都支持。数值差异比较时常用,abs(a - b) < 0.001 是浮点相等判断的标准写法之一。
round(x, n)。 四舍五入到 n 位小数,注意 Python 用的是银行家舍入,round(2.5) 返回 2。在意精确舍入的业务场景要走 Decimal,这条在旧文里展开过。
sum(x, start=0)。 对可迭代对象求和,第二参数是起始值。sum(range(101)) 这种写法比循环清爽,布尔列表配 sum 还能数出真值的个数。
min(x) / max(x)。 除去取极值,它们还接受多个参数、支持 key 指定比较依据,max(students, key=lambda s: s["score"]) 一行拿到最高分学生。空序列会报错,加 default 参数给兜底值。
abs(-3.5) # 3.5
round(2.675, 2) # 2.67,二进制浮点的老问题
sum([True, False, True]) # 2
max([3, 1, 4], default=0) # 4
与序列打交道,六个函数
序列是 Python 处理数据的主体,这一组函数负责遍历、计数与重组。它们的共同点是输入都是可迭代对象,输出多数是迭代器——直接打印往往只看到对象地址,要用 list 包一层才能看到内容,这是新手最常困惑的一处。六个函数的出场顺序也有规律:拿数据先 range 或 zip 配对,遍历时 enumerate 带下标,需要倒着走用 reversed,最后收口交给 sorted,一条数据加工的流水线就齐了。记住「迭代器是一次性的」,遍历过一遍就耗尽了,需要反复用就先转成列表。
len(x)。 返回元素个数,字符串算字符数,中文一个字算一个。它调用的是对象的 __len__ 方法,自定义容器实现这个方法就能被 len 支持。
range(start, stop, step)。 生成整数序列,前闭后开。遍历带下标别用 range(len(x)),那是把 Python 写成了 C,下一组的 enumerate 才是正解。
enumerate(x, start=0)。 遍历时同时给出下标与元素,默认下标从零开始,报表场景传 start=1 从一数起更合阅读习惯。
zip(x, y)。 把多个序列按位置配对,短的到头就停,长的被舍弃。Python 3.10 起加 strict=True 可以在长度不齐时直接报错,长表对齐校验很实用。它还有个镜像用法:zip(*matrix) 把行列表转成列列表,转置一个二维表格只需要这一行。
reversed(x)。 返回逆序迭代器,原序列不动。它比切片 x[::-1] 省内存,只是不能下标访问,遍历够了就用它。
sorted(x, key=None, reverse=False)。 排序并返回新列表,原序列不动。key 是它真正的能力所在:按绝对值排、按字典某字段排、多级排序,都靠 key 表达,reverse=True 换方向。排序是稳定的,计数相同的元素保持原有顺序,做「先按分数排、平分按报名时间」这类规则时可以排两次,先次要后主要。
list(enumerate(["a", "b"], start=1)) # [(1, 'a'), (2, 'b')]
list(zip([1, 2, 3], "xy")) # [(1, 'x'), (2, 'y')]
sorted([-3, 1, -2], key=abs) # [1, -2, -3]
真假与判断,三个函数
程序里大量逻辑是「有没有」「是不是」,这一组给出标准答案。三个函数的名字都很日常,语义却各有一条容易被忽略的细则,写惯了脚本的人基本都吃过其中至少一条的亏,值得逐个交代清楚,避免同名方法在脑子里串味。另外这三个函数都接受可迭代对象,直接跟生成器表达式配合,可以在不建中间列表的前提下完成存在性与一致性检查,数据量大的场景里这一点对内存很友好,任何为判断而先建列表的写法都可以顺手改过来。
any(x)。 可迭代对象里有一个为真就返回真,空序列返回假。判断「列表里是否存在异常值」这类问题,一行代替一个标志位循环。
all(x)。 全部为真才返回真,空序列返回真——注意它与 any 在空输入上恰好相反,这条不对称是笔试与实作的共同考点。校验「所有字段都填过」用它最直白。
isinstance(x, 类型)。 判断对象是不是某类型或其子类,类型可以传元组。类型检查请用它,别用 type(x) == int,后者会把子类误判出去,继承体系一旦参与就出错。
any([0, "", None]) # False
all([1, "a", []]) # False
isinstance(3.5, (int, float)) # True
探查对象,四个函数
调试与通用工具开发的刚需:这个变量到底是什么类型、有哪些属性、两个名字是不是同一个对象。这组函数平时不常出现在业务代码里,排错时出场率极高,熟练使用能让「看代码猜行为」变成「当场问对象要答案」,排查陌生库的对象结构时尤其省时间,值得单独成组记熟。读别人代码、接手没有文档的内部工具时,这一组的作用会翻倍:对象不肯自证身份,就主动去问它。
type(x)。 返回对象的类型,print 出来一目了然。精确取类型用它,类型判断用上一组的 isinstance,两者分工不同。
id(x)。 返回对象的身份编号,可以理解为对象在内存里的门牌号。判断两个名字是否指向同一个对象用 is,id 是 is 背后的实现细节,偶尔用来观察可变对象的共享问题。
dir(x)。 列出对象的全部属性与方法,遇到陌生对象先 dir 一下,能用什么方法当场就有答案,比翻文档快,探查字符串有哪些方法时我第一反应永远是它。
callable(x)。 判断对象能不能像函数一样调用。写通用工具时先探再调,可以避免把配置值误当回调函数传进来的尴尬。
type(3.14) # <class 'float'>
dir("abc")[:5] # ['__add__', '__class__', ...]
callable(len) # True
输入输出与呈现,四个函数
最后一组是与外界打交道的函数:读入、打印、落盘,以及把对象变成可读文本。它们是最先学会的函数,却也有一些后知后觉的参数,用好了能省掉不少手工处理,特别是 print 那几个平时没人提的关键字参数,以及 repr 在排查数据类型问题时的独特用处,这组值得完整过一遍。
print(x, sep, end)。 打印之外,sep 控制分隔符,end 控制结尾字符。循环里传 end=" " 可以同行刷新,配 \r 能做出简易进度显示,比想象中能干。
input(prompt)。 读一行标准输入,返回的永远是字符串。要数字自己转,这是所有交互脚本的第一课。读进来的内容末尾常带换行符,strip 一遍再用,回车混进名字里这种小事故都是它引起的。
open(path, mode, encoding)。 打开文件返回文件对象,务必配 with 使用,encoding 显式写 utf-8,这两条在文件操作一文里已展开过,此处只留一句:读文本必写 encoding。
repr(x)。 返回对象的官方字符串表示,调试利器。print 一个「看起来是 1 实际是 '1'」的变量时类型看不出差别,repr 一打引号就现形。字符串、列表、字典各自都有专门的格式约定, repr 是排查数据问题的第一现场。
print(1, 2, sep="-") # 1-2
repr("1"), repr(1) # ("'1'", '1')
这些函数怎么记
三十个函数过完,回头看不需要逐个背,写代码卡住的时候,先问自己现在的问题是哪一类,再去对应的组里挑函数,这个检索路径比记函数名本身有用得多。有两个函数建议本周就养成习惯:遍历带下标一律 enumerate,类型判断一律 isinstance,这两处替换不需要任何前置知识,改完之后的代码立刻更 Python。
以上就是“Python 常用的 30 个内置函数,一个一个说清楚!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14677/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料