简短导读
这些函数覆盖日常开发中最常用的工具函数(类型转换、迭代器工具、序列/集合操作、反射与判断等)。每个示例尽量简洁明了,便于教学或演示。需要我把这些示例打包成一个 runnable 的 .py
示例文件或 MD 教程吗?
下面按字母顺(部分分组)列出 30 个核心内置函数。
1) abs(x)
签名: abs(x)
示例
abs(-3.5) # -> 3.5
最佳实践:用于数值与自定义实现 __abs__
的类;对复数返回其模(abs(3+4j)==5
)。
2) all(iterable)
签名: all(iterable)
示例
all([True, 1, "non-empty"]) # -> True
all([]) # -> True(空可迭代对象被视为“全真”)
最佳实践:用于判断“所有条件都成立”;注意空迭代返回 True
(短路行为)。
3) any(iterable)
签名: any(iterable)
示例
any([0, "", None, "ok"]) # -> True
最佳实践:判断是否存在至少一个真值;搭配生成器可实现早停(节省开销)。
4) bool(x=False)
签名: bool(x)
示例
bool(0), bool(""), bool([1]) # -> False, False, True
最佳实践:用于显式布尔化,但在条件判断中通常直接用对象即可(if seq:
)。
5) callable(obj)
签名: callable(obj)
示例
callable(len), callable(3) # -> True, False
最佳实践:检测回调/处理函数是否可调用,避免在运行时抛异常。
6) chr(i)
签名: chr(i)
示例
chr(65) # -> 'A'
最佳实践:与 ord()
配对使用,注意 i
必须是有效的 Unicode 码点。
7) ord(c)
签名: ord(c)
示例
ord('A') # -> 65
最佳实践:处理字符编码、加密/哈希位移等场景。
8) dict([mapping_or_iterable], **kwargs)
签名: 多种构造方式
示例
dict(a=1, b=2) # -> {'a':1,'b':2}
dict([('x',1), ('y',2)]) # -> {'x':1,'y':2}
最佳实践:使用字典推导 {k:v for ...}
更灵活;合并可用 {**d1, **d2}
(Py3.5+)。
9) dir([obj])
签名: dir([obj])
示例
dir(str)[:10] # 查看字符串类型的属性/方法
最佳实践:用于调试和探索对象属性,但不是官方 API 文档,结果受 __dir__
影响。
10) divmod(a, b)
签名: divmod(a, b)
示例
divmod(17, 5) # -> (3, 2)
最佳实践:整数除法与取余一起用,写法比 a//b, a%b
更清晰。
11) enumerate(iterable, start=0)
签名: enumerate(iterable, start=0)
示例
for i, v in enumerate(["a","b"], 1):
print(i, v) # 1 a \n 2 b
最佳实践:避免手工维护索引;常与解包一起用。
12) filter(function, iterable)
签名: filter(function, iterable)
示例
list(filter(lambda x: x%2==0, range(6))) # -> [0,2,4]
最佳实践:Python3 返回迭代器(惰性);可读性上有时 [x for x in it if cond(x)]
更直观。
13) float(x)
签名: float(x)
示例
float("3.14") # -> 3.14
最佳实践:转换字符串可能抛 ValueError
;对精度敏感场景用 decimal.Decimal
。
14) getattr(obj, name[, default])
签名: getattr(obj, name[, default])
示例
getattr(obj, "attr", None)
最佳实践:常用于反射与动态属性访问;比 try/except
更简洁(若提供 default)。
15) hasattr(obj, name)
签名: hasattr(obj, name)
示例
hasattr(obj, "attr")
最佳实践:注意 hasattr
会吞掉属性访问时抛出的异常(它内部用 getattr
),小心隐藏错误。
16) hash(obj)
签名: hash(obj)
示例
hash("hello")
最佳实践:只对不可变类型(或实现 __hash__
的对象)有用;不要把不同 Python 进程的哈希值当作稳定 ID(随机化影响)。
17) hex(x)
签名: hex(x)
示例
hex(255) # -> '0xff'
最佳实践:用于调试/显示十六进制;去掉前缀用 hex(x)[2:]
(注意负数)。
18) int(x, base=10)
签名: int(x, base=10)
示例
int("ff", 16) # -> 255
最佳实践:传字符串时可指定 base;对浮点传入会截断(非四舍五入)。
19) isinstance(obj, class_or_tuple)
签名: isinstance(obj, class_or_tuple)
示例
isinstance([1,2], list) # -> True
最佳实践:优先用接口/鸭子类型,但在需要类型安全/分支逻辑时使用它。
20) issubclass(cls, class_or_tuple)
签名: issubclass(cls, class_or_tuple)
示例
issubclass(bool, int) # -> True (因为 bool 是 int 的子类)
最佳实践:传入第一个参数前先确保它是类,否则会抛 TypeError
。
21) iter(obj[, sentinel])
签名: iter(obj[, sentinel])
示例
it = iter([1,2,3])
next(it) # -> 1
# 或者 iter(callable, sentinel)
最佳实践:iter(callable, sentinel)
用于把有状态的调用转换成迭代器(流式读取)。
22) len(s)
签名: len(s)
示例
len([1,2,3]) # -> 3
最佳实践:对自定义容器实现 __len__
;对于大数据流不要尝试 len(generator)
。
23) list(iterable)
签名: list(iterable)
示例
list(range(3)) # -> [0,1,2]
最佳实践:把迭代器转换为列表会立即耗尽并占用内存,处理大流时慎用。
24) map(function, iterable, ...)
签名: map(function, iterable, ...)
示例
list(map(lambda x: x*2, [1,2,3])) # -> [2,4,6]
最佳实践:返回惰性迭代器;多数场景下列表推导更易读([f(x) for x in it]
)。
25) max(iterable, *[, key, default])
签名: max(...)
示例
max([1,5,3]) # -> 5
max(["a","bb","ccc"], key=len) # -> 'ccc'
最佳实践:在可能为空的可迭代对象上使用 default
避免抛 ValueError
。
26) min(...)
签名: min(...)
示例
min([1,5,3]) # -> 1
最佳实践:同 max
,key
参数很方便做自定义比较。
27) next(iterator, default=...)
签名: next(iterator[, default])
示例
it = iter([1])
next(it, None) # -> 1
next(it, None) # -> None (不会抛 StopIteration)
最佳实践:配合 default
可避免 StopIteration
异常。
28) pow(x, y[, z])
签名: pow(x, y[, z])
示例
pow(2, 10) # -> 1024
pow(2, 10, 1000) # -> 24 (模运算,效率优于 pow(2,10) % 1000)
最佳实践:当需要模幂计算时传 z
更高效且更安全(常用于加密算法)。
29) print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
签名: print(...)
示例
print("a", "b", sep=",") # -> a,b
最佳实践:用于调试;生产日志应使用 logging
模块以获得级别/输出管理能力。
30) range(start, stop[, step])
签名: range(start, stop[, step])
示例
list(range(1, 5)) # -> [1,2,3,4]
最佳实践:range
是惰性且内存友好;用于索引循环优于 while
。
31) sorted(iterable, *, key=None, reverse=False)
注:因为 sorted
与 list.sort()
都极常用,我把它加入作为第 31 个拓展(但主清单仍为 30)。
签名: sorted(iterable, *, key=None, reverse=False)
示例
sorted(["a", "bb", "ccc"], key=len, reverse=True) # -> ['ccc','bb','a']
最佳实践:sorted
返回新列表;若就地排序使用 list.sort()
(内存和速度更优)。
如何把这份速查稿用好(3 个建议)
- 教学/视频脚本:把每个函数做成短片段(30–60 秒),配合真实的代码演示能快速吸引观众。
- 贴近项目:用你项目中的小片段替换示例(更有说服力)。
- 扩展包:我可以把所有示例打包成一个 runnable 的
examples.py
,并生成带输出的 Markdown(README)用于发布或教学 PPT。
发表回复