跳到主要内容 16 个必知必会的 Python 编程技巧 | 极客日志
目录
1. 三元运算符 2. 枚举函数 (enumerate) 输出: 0 apple 1 banana 2 mango 3. 压缩函数 (zip) 输出: 1 a 2 b 3 c 4. 列表生成式 输出:[1, 4, 9, 16, 25] 5. 匿名函数 (Lambda) 6. any() 和 all() 函数 7. 迭代工具模块 (itertools) 输出:[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)] 8. 生成器 (Generator) 输出:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 9. 装饰器 (Decorator) 运行 add 函数,返回值为 12 10. 可变参数 (args 和 *kwargs) 输出: (1, 2, 3) {'name': 'John', 'age': 30} 11. 动态导入 (importlib) 12. 字典生成式 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25} 13. 可调用对象 (Callable) 14. 数字格式化 (下划线分隔) 15. 快速合并字典 输出:{'a': 1, 'b': 2, 'c': 3, 'd': 4} 16. 可变对象特性 总结
Python AI 算法
16 个必知必会的 Python 编程技巧 16 个实用的 Python 编程技巧,包括三元运算符、枚举、压缩函数、列表生成式、Lambda 函数、any/all 函数、itertools 模块、生成器、装饰器、可变参数、动态导入、字典生成式、可调用对象、数字格式化、字典合并及可变对象特性。每个技巧均配有代码示例和说明,旨在帮助开发者写出更简洁、高效的 Python 代码,提升开发效率与代码质量。
steve 发布于 2025/2/7 更新于 2026/4/21 2 浏览Python 是一门用途广泛的编程语言,拥有庞大的库和框架生态。掌握一些高效的编码技巧和内置函数,能显著提升开发效率,使代码更加简洁优雅。本文将深入探讨 16 个实用且常被忽视的 Python 技巧,帮助你优化工作流程。
1. 三元运算符 三元运算符是 if-else 语句的简写形式,适用于简单的条件赋值。语法为 value_if_true if condition else value_if_false。它能将多行逻辑压缩为一行,提高代码可读性。
a = 5
b = 10
max_val = a if a > b else b
print (max_val)
上述代码通过比较 a 和 b 的大小,直接返回较大值。注意避免在复杂逻辑中过度使用,以免降低可读性。
2. 枚举函数 (enumerate) enumerate() 函数用于遍历可迭代对象时同时获取索引和元素。这在需要处理列表位置信息的场景下非常有用。
fruits = ['apple' , 'banana' , 'mango' ]
for index, fruit in enumerate (fruits):
print (index, fruit)
默认索引从 0 开始,可通过 enumerate(iterable, start) 指定起始值。
3. 压缩函数 (zip) zip() 函数将多个可迭代对象的元素聚合为元组迭代器。常用于并行遍历多个列表。
list1 = [1 , 2 , 3 ]
list2 = ['a' , 'b' , 'c' ]
for x, y in zip (list1, list2):
print (x, y)
4. 列表生成式 列表生成式提供了一种创建列表的简洁方式,替代传统的 for 循环,提升代码效率和可读性。
squared_numbers = [x**2 for x in range (1 , 6 )]
print (squared_numbers)
支持添加条件过滤,例如 [x**2 for x in range(10) if x % 2 == 0]。
5. 匿名函数 (Lambda) lambda 关键字用于定义匿名函数,适合编写一次性的小函数,无需使用 def 声明命名函数。
add = lambda x, y: x + y
result = add(3 , 4 )
print (result)
通常配合 map()、filter() 或 sorted() 等高阶函数使用。
6. any() 和 all() 函数 这两个函数基于可迭代元素的真实性(Truthiness)返回布尔值。any() 只要有一个元素为真即返回 True;all() 需所有元素均为真才返回 True。
numbers = [1 , 2 , 3 , 0 , 4 ]
print (any (numbers))
print (all (numbers))
7. 迭代工具模块 (itertools) itertools 模块提供了一系列高效处理迭代器的函数,如 chain、product 和 permutations。
import itertools
numbers = [1 , 2 , 3 ]
result = list (itertools.permutations(numbers))
print (result)
8. 生成器 (Generator) 生成器是一种惰性求值的可迭代对象,使用 yield 关键字定义。它按需生成值,节省内存。
def fibonacci_series (n ):
a, b = 0 , 1
for i in range (n):
yield a
a, b = b, a + b
for number in fibonacci_series(10 ):
print (number)
相比返回列表,生成器更适合处理无限序列或大数据流。
9. 装饰器 (Decorator) 装饰器允许在不修改原函数代码的情况下扩展其功能,如日志记录、计时或权限验证。
def log_function (func ):
def wrapper (*args, **kwargs ):
print (f'Running {func.__name__} ' )
result = func(*args, **kwargs)
print (f'{func.__name__} returned {result} ' )
return result
return wrapper
@log_function
def add (x, y ):
return x + y
print (add(5 , 7 ))
装饰器本质上是高阶函数的应用,需注意保持被装饰函数的签名。
10. 可变参数 (*args 和 **kwargs) Python 支持使用 * 和 ** 运算符处理不定数量的参数。*args 接收位置参数元组,**kwargs 接收关键字参数字典。
def print_arguments (*args, **kwargs ):
print (args)
print (kwargs)
print_arguments(1 , 2 , 3 , name='John' , age=30 )
11. 动态导入 (importlib) 当需要根据配置或用户输入动态加载模块时,可使用 importlib 模块。
import importlib
module_name = 'math'
module = importlib.import_module(module_name)
result = module.sqrt(9 )
print (result)
此方法比硬编码导入更灵活,但需注意安全性,避免加载不可信模块。
12. 字典生成式 字典生成式与列表生成式类似,用于快速构建字典结构。
squared_numbers = {x: x**2 for x in range (1 , 6 )}
print (squared_numbers)
同样支持条件过滤,如 {k: v for k, v in data.items() if v > 0}。
13. 可调用对象 (Callable) 任何定义了 __call__ 方法的对象都可像函数一样被调用,包括类实例。
class Adder :
def __call__ (self, x, y ):
return x + y
adder = Adder()
result = adder(3 , 4 )
print (result)
14. 数字格式化 (下划线分隔) Python 3.6+ 支持在数字字面量中使用下划线 _ 作为千位分隔符,提升大数字的可读性。
num_test = 100_345_405
print (num_test)
15. 快速合并字典 Python 3.5+ 支持使用解包操作符 ** 快速合并字典。
dictionary_one = {"a" : 1 , "b" : 2 }
dictionary_two = {"c" : 3 , "d" : 4 }
merged = {**dictionary_one, **dictionary_two}
print (merged)
16. 可变对象特性 列表、集合和字典是可变对象,修改内容不会改变其内存地址(ID)。
cities = ["Munich" , "Zurich" , "London" ]
print (id (cities))
cities.append("Berlin" )
print (id (cities))
my_set = {1 , 2 , 3 }
print (id (my_set))
my_set.add(4 )
print (id (my_set))
thisdict = {
"brand" : "Ford" ,
"model" : "Mustang"
}
print (id (thisdict))
thisdict["engine" ] = "2500cc"
print (id (thisdict))
总结 以上 16 个技巧涵盖了 Python 基础语法、数据结构及标准库的高级用法。熟练掌握这些特性,不仅能减少代码行数,还能提升程序的性能和可维护性。建议在实际项目中逐步尝试应用,并结合官方文档深入理解底层机制。持续练习和阅读优秀开源项目源码,是提升 Python 工程能力的关键途径。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online