一、内置函数概述
Python 的内置函数(Built-in Functions) 是解释器启动时自动加载的核心功能集合,归属builtins模块,属于内置命名空间(全局可访问)。无需手动导入即可直接调用,是 Python 提供的 “开箱即用” 基础工具,覆盖编程核心刚需场景,且因多数由 C 语言实现,执行效率远高于纯 Python 自定义函数。
二、内置函数的本质与核心特性
1. 归属与命名空间
- 所有内置函数存储于builtins模块,内置命名空间是 Python 优先级最高的命名空间(高于全局、局部命名空间);
- 任意作用域可直接调用(除非被同名局部变量覆盖),验证示例:
- python
- import builtins # 内置print函数与builtins.print是同一对象 print(builtins.print is print) # 输出:True print(builtins.len is len) # 输出:True
2. 核心特性
- 性能优异:C 语言底层实现,避免 Python 解释器的性能开销(如len()比手动遍历计数快 10 倍以上);
- 全局可访问:无需导入模块,简化代码冗余(如print()无需import xxx);
- 不可随意覆盖:虽允许用同名变量覆盖(如len = 123),但会破坏代码可读性和功能可用性,强烈不推荐;
- 支撑语言核心机制:是 Python 动态类型、面向对象、迭代协议等特性的基础支撑。
三、Python 选择内置函数的核心依据
Python 筛选内置函数遵循 “核心刚需、高频通用、性能关键、语言完整性” 四大原则,具体拆解:
- 满足基础通用需求:覆盖所有程序都可能用到的 “基础设施”(如print()输出、input()输入、len()长度计算);
- 支撑语言核心特性:服务于 Python 底层机制(如isinstance()支撑类型判断、getattr()支撑动态反射、iter()支撑迭代协议);
- 性能敏感操作优先:对执行频率高、性能影响大的操作(如sort()排序、map()映射)进行 C 级优化;
- 简化语法降低门槛:避免 “导入模块才能用基础功能” 的冗余(如open()文件操作、help()协助查询);
- 保持命名空间精简:仅纳入 “不可替代” 的核心功能,非通用需求(如正则、网络请求)放入标准库(re、requests)。
四、常用内置函数分类详解
1. 基础操作类(高频刚需)
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
|
print(*objects, sep=' ', end=' |
输出对象到指定流(默认控制台) |
print(“Hello”, “Python”, sep='-') → Hello-Python |
|
input |
input([prompt]) |
读取用户输入(返回字符串) |
name = input(“请输入姓名:”) |
|
len |
len(s) |
返回对象长度(字符串 / 列表 / 字典等可迭代对象) |
len([1,2,3]) → 3;len(“abc”) → 3 |
|
type |
type(object) |
返回对象的类型 |
type(10) → <class 'int'>;type([]) → <class 'list'> |
|
id |
id(object) |
返回对象的唯一内存地址(整数) |
a=10; id(a) → 140709212345672(因环境而异) |
|
help |
help([object]) |
查看对象协助文档 |
help(str.split) → 显示字符串 split 方法文档 |
2. 类型转换类(数据类型适配)
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
int |
int(x, base=10) |
转为整数(base 指定进制,默认 10) |
int(“123”) → 123;int(“101”, 2) → 5 |
|
float |
float(x) |
转为浮点数 |
float(“3.14”) → 3.14;float(10) → 10.0 |
|
str |
str(object) |
转为字符串 |
str(123) → “123”;str([1,2]) → “[1, 2]” |
|
list |
list(iterable) |
转为列表 |
list((1,2,3)) → [1,2,3];list(“abc”) → [“a”,”b”,”c”] |
|
tuple |
tuple(iterable) |
转为元组 |
tuple([1,2,3]) → (1,2,3) |
|
dict |
dict(** kwargs)或dict(iterable) |
转为字典 |
dict(a=1, b=2) → {“a”:1, “b”:2};dict([(“a”,1)]) → {“a”:1} |
|
bool |
bool(x) |
转为布尔值(0/''/[]/None 等为 False) |
bool(0) → False;bool([1]) → True |
|
set |
set(iterable) |
转为集合(去重) |
set([1,2,2,3]) → {1,2,3} |
3. 序列 / 集合 / 映射操作类(数据处理)
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
range |
range(start, stop[, step]) |
生成整数序列(惰性迭代,不占内存) |
list(range(1,5,2)) → [1,3];list(range(5)) → [0,1,2,3,4] |
|
enumerate |
enumerate(iterable, start=0) |
生成索引 – 元素对(枚举对象) |
for i, v in enumerate([“a”,”b”], start=1): print(i,v) → 1 a;2 b |
|
zip |
zip(*iterables) |
打包多个可迭代对象(取最短长度) |
list(zip([1,2], [“a”,”b”])) → [(1,”a”), (2,”b”)] |
|
sorted |
sorted(iterable, key=None, reverse=False) |
排序并返回新列表(不修改原对象) |
sorted([3,1,2], reverse=True) → [3,2,1];sorted([“b”,”a”], key=str.upper) → [“a”,”b”] |
|
max/min |
max(iterable)/min(iterable) |
返回最大 / 最小值 |
max([1,2,3]) → 3;min(“abc”) → “a” |
|
sum |
sum(iterable, start=0) |
求和(start 为初始值,默认 0) |
sum([1,2,3]) → 6;sum([1,2], start=10) → 13 |
|
any |
any(iterable) |
任意元素为 True 则返回 True(空为 False) |
any([0,1,False]) → True;any([]) → False |
|
all |
all(iterable) |
所有元素为 True 则返回 True(空为 True) |
all([1,2,True]) → True;all([1,False]) → False |
4. 迭代器与函数工具类(流程处理)
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
iter |
iter(iterable) |
生成迭代器对象(支撑next()调用) |
it = iter([1,2]); next(it) → 1;next(it) → 2 |
|
next |
next(iterator, default=None) |
获取迭代器下一个元素(无元素返回 default) |
it = iter([1]); next(it, “end”) → 1;next(it, “end”) → “end” |
|
map |
map(function, *iterables) |
用函数处理可迭代对象元素,返回迭代器 |
list(map(lambda x: x*2, [1,2])) → [2,4] |
|
filter |
filter(function, iterable) |
筛选可迭代对象中满足函数条件的元素 |
list(filter(lambda x: x%2==0, [1,2,3])) → [2] |
5. 对象与属性操作类(动态反射)
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
isinstance |
isinstance(object, classinfo) |
判断对象是否为指定类型(支持多类型) |
isinstance(10, int) → True;isinstance(“a”, (str, int)) → True |
|
hasattr |
hasattr(object, name) |
判断对象是否存在指定属性(name 为字符串) |
class A: x=1; hasattr(A(), “x”) → True |
|
getattr |
getattr(object, name, default) |
获取对象属性(无则返回 default) |
class A: x=1; getattr(A(), “x”) → 1;getattr(A(), “y”, 0) → 0 |
|
setattr |
setattr(object, name, value) |
为对象设置属性 |
class A: pass; a=A(); setattr(a, “x”, 1); print(a.x) → 1 |
|
delattr |
delattr(object, name) |
删除对象属性 |
class A: x=1; a=A(); delattr(a, “x”); hasattr(a, “x”) → False |
6. 装饰器与类工具类(面向对象)
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
staticmethod |
staticmethod(function) |
定义静态方法(无 self 参数,类和实例均可调用) |
class A: @staticmethod def func(): print(1); A.func() → 1 |
|
classmethod |
classmethod(function) |
定义类方法(接收 cls 参数,绑定类而非实例) |
class A: @classmethod def func(cls): print(cls); A.func() → <class '__main__.A'> |
|
property |
property(fget=None, fset=None, fdel=None, doc=None) |
定义属性(将方法转为属性访问) |
class A: def __init__(self, x): self._x=x; @property def x(self): return self._x; a=A(1); print(a.x) → 1 |
7. 输入输出与资源管理类
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
open |
open(file, mode='r', encoding=None) |
打开文件,返回文件对象(需配合with关闭) |
with open(“test.txt”, “w”, encoding=”utf-8″) as f: f.write(“Hello”) |
8. 数学与数值操作类
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
abs |
abs(x) |
返回绝对值 |
abs(-3.14) → 3.14;abs(5) → 5 |
|
round |
round(x, n=0) |
四舍五入(n 为小数位数,默认 0) |
round(3.1415, 2) → 3.14;round(3.5) → 4 |
|
pow |
pow(x, y, z=None) |
计算 x^y(z 存在则返回 (x^y)% z) |
pow(2,3) → 8;pow(2,3,5) → 3 |
|
divmod |
divmod(a, b) |
返回 (a//b, a% b)(商和余数元组) |
divmod(7,3) → (2,1) |
9. 异常处理类
|
函数名 |
语法 |
功能描述 |
示例代码 |
|
raise |
raise [exception [from cause]] |
主动抛出异常 |
raise ValueError(“参数错误”) |
|
assert |
assert expression, message |
断言(expression 为 False 则抛出 AssertionError) |
assert 1==2, “1不等于2” → 抛出 AssertionError: 1 不等于 2 |
五、各版本内置函数差异说明
1. Python 2 → Python 3 的重大调整(影响兼容性)
|
变化类型 |
具体调整 |
替代方案 |
|
废弃函数 |
移除apply()、cmp()、coerce()、execfile() |
func(*args)替代apply();operator.cmp替代cmp() |
|
功能替换 |
raw_input() → input()(3.x 的input()等价于 2.x 的raw_input()) |
直接使用input(),需类型转换时配合int()等 |
|
功能升级 |
print从语句改为内置函数(支持end/sep参数) |
print(“a”, end=””)替代print “a” |
|
模块迁移 |
reduce()从内置移至functools模块 |
from functools import reduce后使用 |
|
迭代器优化 |
xrange() → range()(3.x 的range()为惰性迭代器) |
直接使用range(),无需修改 |
2. Python 3.x 子版本渐进式迭代(无破坏性变化)
- Python 3.3:新增yield from语法(适配迭代器内置函数);
- Python 3.4:内置函数isinstance()适配枚举类型(enum.Enum);
- Python 3.8:新增math.prod()(计算乘积,原需自定义);
- Python 3.9:优化dict相关操作(如dict.merge()),内置函数isinstance()支持更多复合类型判断;
- Python 3.10:match语句(非函数,但优化了内置类型判断逻辑)。
3. 核心稳定性
- 基础内置函数(print、len、type、isinstance等)从未变动;
- 废弃函数极少,且均提供明确替代方案,兼容性优先。
六、内置函数使用提议
- 优先使用内置函数:一样功能下,内置函数性能远优于自定义函数(如sum()比for循环求和快 5-10 倍);
- 避免覆盖内置函数:严禁用len、print、sorted等作为变量名,否则会屏蔽内置功能;
- 熟悉参数细节:如sort()是列表方法(原地排序),sorted()是内置函数(返回新列表);zip()取最短可迭代对象长度;
- 结合场景选择:如map()/filter()适合简单逻辑,复杂场景提议用列表推导式(可读性更高);
- 利用文档快速查询:不确定功能时,用help(函数名)查看官方文档(如help(sorted))。
七、总结
Python 内置函数是 “核心刚需 + 性能优化 + 易用性” 的平衡产物,覆盖编程全流程基础操作。其核心价值在于:
- 开箱即用,降低开发门槛;
- 底层优化,提升程序性能;
- 支撑语言核心特性,保证语法一致性。
版本间差异以 “渐进式迭代” 为主,核心功能稳定性强,学习时需重点掌握高频函数的使用场景与参数细节,避免覆盖内置函数,充分发挥其高效、便捷的优势。


收藏了,感谢分享