Python中常用的内置函数
前言Python 的内置函数built-in function是解释器启动时就注入命名空间的一批函数不需要任何import就能调用。数量不多每个 3.x 版本也就几十个但覆盖了输入输出、类型转换、判断检查、迭代聚合、数学运算这些最常见的动作。一个普遍的误解是内置函数很多要背下来。实际上日常代码里反复出现的也就二十来个剩下的多数有更清晰的替代写法mapfilterlambda往往不如一个列表推导式好读__import__()几乎永远应该写成import语句。本文按功能分组梳理常用内置函数给出可运行示例并明确哪几个应该少用。本文面向 Python 33.8 及以上均可运行。Python 2 的print语句、raw_input()、xrange()在 Python 3 中都已不复存在print变成函数raw_input改名inputxrange被range取代Python 2.7 自 2020 年 1 月 1 日起停止维护本文一律按 Python 3 写。一、内置函数存放在哪里它们都在builtins模块里解释器把该模块的所有公开名字预先放进每个作用域的全局命名空间所以你不用 import 就能用。# 适用于 Python 3.8import builtinsnames sorted(n for n in dir(builtins) if not n.startswith(_))print(len(names))print(names)因为只是普通名字你完全可以用自己的变量覆盖它们——这既是灵活性也是坑详见常见坑点。另外help()虽属内置命名空间但它其实是site模块在启动时添加的用python -S启动后就调用不到。二、输入输出与表示函数签名要点返回printprint(*objects, sep , end\n, fileNone, flushFalse)Noneinputinput(prompt, /)str永远是字符串openopen(file, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone)文件对象formatformat(value, format_spec, /)strreprrepr(object, /)str面向调试的可读表示# 适用于 Python 3.8print(a, b, sep-, end!\n) # a-b!name input(请输入名字: ) # 返回值永远是 strprint(format(3.14159, .2f)) # 3.14print(repr(a\tb)) # a\tbprint(str(a\tb)) # 制表符被真实展开input()永远返回字符串需要数字必须自己转换repr()与str()的区别在于前者尽量给出能重新构造该对象的表示调试打印容器时用repr()或!r格式化信息更完整。三、类型转换与构造int/float/str/list/tuple/dict/set/bytes/bool既是类型也是可调用对象调用它们就是构造新对象。# 适用于 Python 3.8print(int(2a, 16)) # 42第二参数是进制print(list(abc)) # [a, b, c]print(tuple([1, 2])) # (1, 2)print(set([1, 1, 2])) # {1, 2}print(bool(0), bool()) # False Falseprint(str(12) x) # 12x# int(abc) 会抛 ValueError# int(None) 会抛 TypeError注意int()对浮点是截断而非四舍五入int(3.99)得3要四舍五入用round(3.99)但注意银行家舍入。四、判断与检查函数用途关键点isinstance(obj, classinfo)类型判断考虑继承推荐首选issubclass(cls, classinfo)继承判断只看类callable(obj)能否调用有__call__即可hasattr(obj, name)属性是否存在会触发属性访问getattr(obj, name, default)取属性带默认值更安全all(iterable)/any(iterable)全体 / 任一为真空序列时all为True、any为False# 适用于 Python 3.8print(isinstance(True, int)) # Truebool 是 int 的子类print(all([]), any([])) # True Falseprint(callable(len), callable(1)) # True Falseclass C:x 1c C()print(getattr(c, y, 默认)) # 默认print(hasattr(c, x)) # Trueall()和any()都是短路的any遇到第一个真值就停all遇到第一个假值就停因此它们可以配合生成器做惰性判断。五、迭代、序列与聚合函数返回惰性len(obj)int—range(stop)/range(start, stop[, step])range对象是enumerate(iterable, start0)迭代器是zip(*iterables, strictFalse)迭代器是map(function, iterable, *iterables)迭代器是filter(function, iterable)迭代器是reversed(obj)迭代器是sorted(iterable, *, keyNone, reverseFalse)新list否sum(iterable, start0)数值否min/max元素否# 适用于 Python 3.8nums [3, 1, 4, 1, 5, 9]print(sorted(nums)) # [1, 1, 3, 4, 5, 9]print(sorted(set(nums), reverseTrue)) # [9, 5, 4, 3, 1]print(sum(nums), max(nums), min(nums)) # 23 9 1pairs [(b, 2), (a, 1)]print(max(pairs, keylambda p: p[1])) # (b, 2)for i, ch in enumerate(abc, start1):print(i, ch)print(list(reversed(abc))) # [c, b, a]zip()的strict参数需要3.10 及以上map()的strict参数需要3.14 及以上写兼容 3.8 的代码时不要使用。六、数学与进制函数说明abs(x)绝对值round(number, ndigitsNone)银行家舍入round half to evendivmod(a, b)返回(a // b, a % b)pow(base, exp, modNone)三参数时做模幂比(base ** exp) % mod高效bin/oct/hex转成带前缀的字符串chr/ord码点与单字符互转# 适用于 Python 3.8print(round(2.5), round(3.5)) # 2 4银行家舍入print(divmod(-7, 3)) # (-3, 2)print(pow(2, 10, 1000)) # 24等价于 1024 % 1000print(bin(10), oct(10), hex(10)) # 0b1010 0o12 0xaprint(ord(中), chr(20013)) # 20013 中常见坑点坑 1用变量名覆盖内置函数。❌list [1, 2, 3]之后再想list(abc)就报TypeError因为list已被绑成列表。✅ 换个名字如items [1, 2, 3]。同理不要用id、type、sum、format、input当变量名。坑 2以为input()返回数字。❌age input(年龄: ); print(age 1)—— 字符串加整数抛TypeError。✅age int(input(年龄: ))并做好ValueError的兜底。坑 3sorted()返回None❌nums nums.sort()——nums变None后面全崩。✅nums sorted(nums)或nums.sort()后者原地排序不要接返回值。坑 4sorted()把key当位置参数。❌sorted(data, lambda x: x[1])—— 抛TypeErrorkey和reverse是仅关键字参数。✅sorted(data, keylambda x: x[1])。坑 5对迭代器求两次值。❌nums [1, 2, 3]it filter(lambda x: x % 2, nums)print(sum(it)) # 2print(list(it)) # []已被消费完✅ 需要重复用就先lst list(it)之后都用lst。坑 6all([])与any([])想当然。❌ 以为空序列都返回False。✅all([])是True无假值即全真any([])是False无真值即全假这是数学上的约定。坑 7max()/min()对空序列直接调用。❌max([])—— 抛ValueError: max() arg is an empty sequence。✅max([], defaultNone)default仅在单个可迭代参数形式下可用。坑 8str()和repr()混用做调试输出。❌ 打印嵌套结构时用print(str(nested))字符串值看不出引号1与1分不清。✅ 用print(repr(nested))或 f-string 里的{nested!r}。总结分组常用函数一句话提醒输入输出print、input、openinput返回stropen要写encoding类型转换int、float、str、list、set、dictint()是截断不是四舍五入判断检查isinstance、hasattr、getattr、all、any优先isinstance而非type迭代序列len、range、enumerate、zip、sorted惰性的那几个返回迭代器数学进制abs、round、divmod、pow、hexround是银行家舍入真正要记的其实就一句话惰性函数返回迭代器只能消费一次原地方法list.sort返回None而sorted返回新列表。拿不准签名时在解释器里help(函数名)一敲参数名和默认值都清清楚楚比任何清单都可靠。

相关新闻

GSQL在Win8/Win10上的兼容性解析与部署指南

GSQL在Win8/Win10上的兼容性解析与部署指南

简介:GSQL是一款面向Windows 8与Windows 10平台的轻量级数据库管理系统,以免安装绿色简版形式提供,解压即可启动服务,适合开发调试、教学演示及临时测试等不希望改动系统原有配置的场景。压缩包共收录234个文件,约16.4…

2026/10/9 15:10:45 阅读更多 →
Altium Designer 25精进实践:从画板到设计,突破PCB设计瓶颈

Altium Designer 25精进实践:从画板到设计,突破PCB设计瓶颈

最近后台收到好几位朋友的消息,都在问同一件事:新书《Altium Designer 25 电路设计精进实践》上市了,还带评论赠书活动,值不值得参加、书到底适不适合自己。作为长期跟 PCB 打交道的人,我对这类“新书营销”动作本来比…

2026/10/9 15:10:45 阅读更多 →
pstack 排查 Claude 工具链卡死与启动失败实战

pstack 排查 Claude 工具链卡死与启动失败实战

1. 项目缘起:为什么会有 pstack-claude 这个组合第一次看到pstack-claude这个标题,很多人会愣一下——pstack 不是 Linux 下那个用来打印进程调用栈的诊断工具吗,怎么跟 Claude 扯上关系了。我一开始也是同样的反应,直到自己动手把…

2026/10/9 15:10:45 阅读更多 →

最新新闻

如何降低大模型 Token 调用成本?2026 年模型分级、缓存、路由和提示词优化清单(TaoToken 统一 Key 实践版)

如何降低大模型 Token 调用成本?2026 年模型分级、缓存、路由和提示词优化清单(TaoToken 统一 Key 实践版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 15:52:43 阅读更多 →
【Bug已解决】codex: 沙箱阻止操作 — CodeX CLI 无法在沙箱中执行命令解决方案(TaoToken 统一 Key 通道版)

【Bug已解决】codex: 沙箱阻止操作 — CodeX CLI 无法在沙箱中执行命令解决方案(TaoToken 统一 Key 通道版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 15:52:43 阅读更多 →
通过定制SimpleCursorAdapter来实现ListView:把Cursor字段映射改到TaoToken统一Key通道的配置与验证

通过定制SimpleCursorAdapter来实现ListView:把Cursor字段映射改到TaoToken统一Key通道的配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 15:52:43 阅读更多 →
Linux进程状态详解:从R/S/D/T/Z到线上故障排查实战

Linux进程状态详解:从R/S/D/T/Z到线上故障排查实战

做运维这些年,几乎每次面试都会拿“Linux进程状态有哪些”当开场题,而每次都能筛掉一批人。上周我带的一个徒弟出去面试,倒是把R、S、D、T、Z、X背得滚瓜烂熟,结果被追问“D状态到底意味着什么、线上遇到怎么处理”就卡壳了。其实…

2026/10/9 15:52:43 阅读更多 →
英特尔 oneAPI 工具包:用 DPC++ 打开异构计算新纪元

英特尔 oneAPI 工具包:用 DPC++ 打开异构计算新纪元

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 15:52:43 阅读更多 →
STGCN时空图卷积网络详解:从原理到PyTorch交通流量预测实践

STGCN时空图卷积网络详解:从原理到PyTorch交通流量预测实践

简介:这套PyTorch框架下的STGCN时空图卷积网络实现,源自IJCAI 2018论文官方代码,面向从事人体行为分析、智能监控与动作识别研究的开发者和学习者。模型通过图卷积模块提取骨骼关节点拓扑特征,结合时序卷积层捕捉动作序列动态变化…

2026/10/9 15:51:41 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →