以下是Python编程中一些实用技巧的整理,涵盖不同场景下的代码优化与高效写法,帮助提升代码可读性和性能:
一、基础技巧
1. 列表推导式与生成器表达式
python
# 快速生成列表
squares = [x**2 for x in range(10)] # [0, 1, 4, ..., 81]
# 生成器节省内存
gen = (x**2 for x in range(10)) # 惰性计算
2. 链式比较与成员检测
python
if 1 <= x < 10: # 链式比较
pass
if key in {'a', 'b', 'c'}: # 集合检测速度更快
pass
3. 字符串格式化(f-string)
python
name = "Alice"
print(f"Hello, {name}!") # Python 3.6+
4. 上下文管理器(文件操作自动关闭)
python
with open('file.txt', 'r') as f:
content = f.read()
二、数据结构优化
1. 使用defaultdict与Counter
python
from collections import defaultdict, Counter
# 自动初始化字典键
dd = defaultdict(list)
dd['key'].append(1)
# 快速计数
counts = Counter('abracadabra') # {'a':5, 'b':2...}
2. 字典合并
python
d1 = {'a': 1}
d2 = {'b': 2}
merged = {**d1, **d2} # Python 3.5+
merged = d1 | d2 # Python 3.9+
3. 元组解包与星号表达式
python
a, *rest = [1, 2, 3, 4] # a=1, rest=[2,3,4]
三、函数与模块
1. 装饰器(Decorator)
python
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print(f"Time: {time.time() - start}s")
return result
return wrapper
@timer
def my_func():
pass
2. 类型提示(Type Hints)
python
def greet(name: str) -> str:
return f"Hello, {name}"
3. 生成器函数(yield)
python
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
四、异常处理与调试
1. 精准捕获异常
python
try:
# 可能出错的代码
except (ValueError, TypeError) as e:
print(f"Error: {e}")
else:
# 无异常时执行
finally:
# 清理资源
2. 使用logging模块
python
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("Debug info")
五、代码优化
1. 局部变量访问更快
python
# 在循环中预先读取全局变量
local_func = some_func
for _ in range(1000):
local_func()
2. 用map/filter替代循环
python
nums = [1, 2, 3]
squared = list(map(lambda x: x**2, nums))
3. 利用set快速去重
python
unique = list(set(duplicates)) # 去重(不保证顺序)
六、高级特性
1. 元类与__slots__(节省内存)
python
class User:
__slots__ = ['name', 'age'] # 禁止动态添加属性
def __init__(self, name, age):
self.name = name
self.age = age
2. 协程与异步编程(asyncio)
python
import asyncio
async def fetch_data():
await asyncio.sleep(1)
return "Data"
3. 缓存结果(functools.lru_cache)
python
from functools import lru_cache
@lru_cache(maxsize=128)
def heavy_computation(x):
return x * x
七、代码风格与工具
1. 遵循PEP8规范
python
# 使用flake8或black自动格式化代码
2. 文档字符串(Docstring)
python
def add(a, b):
"""Return the sum of a and b."""
return a + b
3. 单元测试(pytest)
python
# test_sample.py
def test_add():
assert add(2, 3) == 5
掌握这些技巧后,代码将更简洁高效。建议结合具体项目实践,逐步深入理解!