1. 善用列表推导式
列表推导式是Python的一大特色,简洁又强大。
# 普通方法
squares = []
for i in range(10):
squares.append(i**2)
# 列表推导式
squares = [i**2 for i in range(10)]
解释:看,一行代码就完成了循环任务,清晰明了,效率高!
2. 了解生成器
当你处理大量数据时,生成器可以节省大量内存。
# 使用列表存储大数字
numbers = list(range(1, 1000000))
# 改用生成器
numbers = (i for i in range(1, 1000000))
生成器通过yield关键字创建,按需生成值,不占用全部内存。
3. 巧用内置函数
Python内置了很多宝藏函数,比如map()和filter()。
# 双倍数字
nums_doubled = [2*x for x in range(5)]
# 同样效果,使用map()
nums_doubled_map = list(map(lambda x: 2*x, range(5)))
map()接受一个函数和一个可迭代对象,对每个元素应用该函数。
4. 避免全局变量
尽量减少全局变量的使用,利用函数参数和返回值。
# 不好的例子
global_var = 10
def add_to_global(x):
global global_var
global_var += x
return global_var
# 好的方式
def add_to_local(prev_value, x):
return prev_value + x
局部变量更安全,避免了意外的全局状态改变。
5. 利用上下文管理器
with语句管理资源,如文件操作,确保资源正确关闭。
# 不用with
file = open("example.txt", "r")
content = file.read()
file.close()
# 使用with
with open("example.txt", "r") as file:
content = file.read()
自动管理,代码更干净,不用担心忘记关闭文件。
6. 错误处理的艺术
学会优雅地处理异常,而不是忽略它们。
try:
result = 10 / 0
except ZeroDivisionError:
print("不能除以零哦!")
通过try-except捕获特定错误,程序更健壮。
7. 列表不要用作计数器 -counter
使用collections.Counter或简单变量计数。
# 错误示例
list_counter = [0] * 10
list_counter[3] += 1
# 正确示例
from collections import Counter
counter = Counter()
counter['apple'] += 1
Counter为每个元素维护计数,更直观。
8. 理解装饰器
装饰器让你的函数穿上魔法披风。
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
装饰器增强了函数功能,而无需修改其源码。
9. 字符串连接的智慧 +
直接使用+或join(),后者更高效。
parts = ["Hello", " ", "world!"]
# 不推荐
message = parts[0] + parts[1] + parts[2]
# 推荐
message = " ".join(parts)
当连接多个字符串时,join()性能更优。
10. 列表分片
分片不只是获取子列表,还能快速复制或修改片段。
my_list = [1, 2, 3, 4, 5]
# 复制列表
copy_list = my_list[:]
# 修改片段
my_list[1:3] = [10, 11]
print(my_list) # 输出: [1, 10, 11, 4, 5]
分片操作灵活且高效,是列表操作的瑞士军刀。
11. 使用set去重
当需要去除重复项时,集合(set)是不二之选。
numbers = [1, 2, 3, 2, 1, 5, 6]
unique_numbers = set(numbers)
瞬间去除重复,适用于快速查找唯一值的场景。
12. 模块导入的讲究
合理组织和导入模块,避免全局污染。
# 不好
from math import *
sin(1)
# 推荐
import math
math.sin(1)
明确导入需要的函数,保持命名空间的清晰。
13. 代码复用的艺术
编写可重用的函数和类,遵循DRY原则(Don't Repeat Yourself)。
def greet(name):
return f"Hello, {name}!"
print(greet("Alice"))
print(greet("Bob"))
通过封装逻辑,减少重复代码,提高代码质量。
14. 性能分析
使用cProfile等工具分析你的代码瓶颈。
import cProfile
def my_function():
pass # 假设这里是复杂计算
cProfile.run('my_function()')
了解哪些部分慢,针对性优化。
15. 代码风格与PEP 8
遵循PEP 8规范,让代码更加易读。
- 函数名小写,单词间用下划线连接。
- 类名首字母大写。
- 适当的空间和缩进,增强可读性。
# 遵循PEP 8
def my_function():
return "遵守规范的代码真好看!"
风格统一,团队协作更愉快。
好啦,以上就是今天分享的15个Python高效编程的小技巧。