尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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(函数名)一敲参数名和默认值都清清楚楚比任何清单都可靠。
RELATED

相关推荐

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

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

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

📅 2026/10/9 15:10:34
关键路径法CPM完全指南:从原理到实战,彻底搞懂项目最短工期计算

关键路径法CPM完全指南:从原理到实战,彻底搞懂项目最短工期计算

1. 从一个被问烂了的问题说起:项目到底为什么总是延期如果你带过项目,大概率遇到过这种场景:排期的时候每个人都拍胸脯说没问题,甘特图画得漂漂亮亮,结果到了交付前两周,突然发现某个环节卡住了&#xff0c…

📅 2026/10/9 15:05:33
Oracle 11g INS-30131错误根源与ACL权限修复指南

Oracle 11g INS-30131错误根源与ACL权限修复指南

简介:本资源是一份针对Oracle 11g Windows平台安装失败问题的实操型排错指南,面向数据库初学者、DBA入门人员及企业环境部署工程师,专门解决安装过程中高频报错“[INS-30131] 执行安装程序验证所需的初始设置失败”。文档系统梳理了四步关键修…

📅 2026/10/9 15:05:33
MORE NEWS

更多资讯

📰

面向程序员的数理逻辑精要:形式系统、语义与自动证明

简介:这是一份专为计算机科学专业学生打造的数理逻辑核心考点复习笔记,聚焦形式化推理能力培养,解决课程学习、期末备考与考研基础夯实中的概念抽象、公式结构难理解、归纳证明不熟练等痛点。资源为单文件PDF,共1个869KB的高清笔记…

📰

mangos-tbc 2.4.3 内容数据库 tbc-db 导入配置与自定义修改实战

简介:TBC-DB 是面向 CMaNGOS / mangos-tbc 服务端开发者的内容数据库资源,专为《魔兽世界》2.4.3 客户端(内部版本 8606)打造,解决私服搭建中角色、物品、任务、生物等游戏内容数据的存储与维护问题。数据库以 SQL 文件…

📰

Warp 2.0 从零上手:4 步把终端变成 Agentic 开发环境(GitHub 6.4万星)|TaoToken 统一 Key 接入 MCP 实战

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

📰

【Claude Code 全攻略】终端 AI 编程助手从入门到进阶:把 settings 改到 TaoToken 的完整配置与验证

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

📰

我给自己写了一个 mini OpenRouter:基于蓝耘 MaaS 的多模型路由网关实战

我给自己写了一个 mini OpenRouter:基于蓝耘 MaaS 的多模型路由网关实战 一、为什么需要"自己的网关" 前几篇我把蓝耘 MaaS 的 API 已经摸熟了——45 个模型、OpenAI 兼容协议、统一 Key 调用。但真要在生产环境用起来,会很快撞上几个工程问题…

📰

GLM-5.3-Flash 清华智谱重磅发布:320B 参数、18B 激活,性能超越 GLM-5.2 且价格仅十分之一——TaoToken 统一 Key 实测接入

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

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬