Python实用技巧与最佳实践
以下是一些能让你的 Python 代码更高效优雅的实用技巧:
字符串与文本处理
使用 f-strings 格式化 - .format() % 格式化更清晰:
name, age = "Alice", 30
print(f"{name} is {age} years old") # 清晰易读
python
三引号多行字符串 - 适合 SQL 查询或文档:
query = """
SELECT name, email
FROM users
WHERE active = 1
"""
python
列表与字典操作
列表推导式 - 比传统循环更简洁:
squares = [x**2 for x in range(10) if x % 2 == 0] # 仅偶数的平方
python
字典推导式
word_lengths = {word: len(word) for word in ["python", "java", "go"]}
python
使用 get() 安全访问字典
user_age = user_data.get("age", 0) # 若 "age" 键不存在则返回 0
python
控制流与逻辑
链式比较
if 18 <= age <= 65: # 比 age >= 18 and age <= 65 更清晰
print("工作年龄")
python
使用 any() all() 做布尔运算
if any(x > 10 for x in numbers): # 只要有任一数 > 10 即为 True
if all(score >= 60 for score in scores): # 所有分数都 >= 60 才为 True
python
函数与类技巧
避免可变默认参数陷阱
# 错误方式
def add_item(item, target_list=[]): # 危险!

# 正确方式
def add_item(item, target_list=None):
if target_list is None:
target_list = []
python
*使用 args kwargs 实现灵活函数
def flexible_func(*args, **kwargs):
print(f"Args: {args}, Kwargs: {kwargs}")
python
内置函数与模块
enumerate() 替代手动计数
for i, item in enumerate(items):
print(f"{i}: {item}")
python
zip() 并行迭代
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name}: {age}")
python
collections.Counter 计数
from collections import Counter
letter_counts = Counter("hello world")
python
pathlib 处理文件路径
from pathlib import Path
file_path = Path("data") / "file.txt" # 跨平台路径处理
python
性能与内存
用生成器处理大数据集
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
python
列表切片技巧
# 反转列表
reversed_list = original_list[::-1]

# 获取每第 n 个元素
every_third = my_list[::3]
python
错误处理
EAFP (请求原谅比请求许可更容易)
# Python 风格
try:
value = my_dict["key"]
except KeyError:
value = "default"

# 而不是
if "key" in my_dict:
value = my_dict["key"]
else:
value = "default"
python
上下文管理器
始终使用上下文管理器处理文件操作
with open("file.txt") as f:
content = f.read()
# 文件自动关闭,即使发生异常也是如此
python
调试与开发
pprint 打印复杂数据结构
from pprint import pprint
pprint(complex_nested_dict) # 输出更易读
python
breakpoint() 调试(Python 3.7+):
# 替代 import pdb; pdb.set_trace()
breakpoint() # 进入调试器
python
这些技巧能显著提升你的 Python 代码的可读性、性能和可维护性。关键是要根据具体场景选择合适的技巧应用。
实践建议
字符串格式化优先用 f-strings(Python 3.6+)
列表/字典推导式要适度,过于复杂时用常规 for 循环
字典访问用 .get() 防止 KeyError
文件操作必须用 with 语句
大数据集处理优先考虑生成器
错误处理倾向于 EAFP 而非 LBYL
复杂调试场景用 pprint breakpoint()
记住:代码是写给人看的,只是顺便能被机器执行。选择技巧时,可读性和可维护性应该是首要考虑因素。
Aa