生成器(Generators):生成器是一种特殊类型的迭代器,允许你按需生成值,而不是一次性生成所有值。它们使用?yield
?关键字而不是?return
,并在每次迭代时返回一个值。生成器在处理大量数据时非常有用,因为它们可以节省内存。例如:
# 使用生成器生成无限序列的前 n 个斐波那契数
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# 打印前 10 个斐波那契数
fib_gen = fibonacci(10)
for num in fib_gen:
print(num) # 输出: 0 1 1 2 3 5 8 13 21 34
装饰器(Decorators):装饰器是 Python 中修改函数或类行为的一种高级功能。它们使用?@
?符号作为语法糖,允许你在不修改函数或类代码的情况下添加额外的功能。装饰器在日志记录、权限验证、性能优化等方面非常有用。例如:
# 使用装饰器测量函数执行时间
import time
def timer_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} 执行时间: {end_time - start_time} 秒")
return result
return wrapper
@timer_decorator
def slow_function(duration):
time.sleep(duration)
return "完成"
slow_function(2) # 输出: slow_function 执行时间: 2.00x 秒(x 表示具体的小数秒)