python装饰器和闭包
时间: 2024-08-19 08:00:37 浏览: 55
实例详解Python装饰器与闭包
在Python中,装饰器是一种特殊类型的函数,它们可以修改其他函数的行为,而无需对原函数做任何改动。装饰器通过接收一个函数作为输入,对其进行处理(如添加日志、计时等),然后返回一个新的包装函数。例如:
```python
def my_decorator(func):
def wrapper():
print("Before function call")
func()
print("After function call")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello() # 输出: Before function call, Hello!, After function call
```
闭包则是当一个函数内部定义了另一个函数,并返回这个内部函数时形成的一种引用关系。内部函数能够访问外部函数的局部变量,即便外部函数已经执行完毕并退出,这些局部变量也不会被销毁,因为它们还由内部函数持有。这是一种高级数据封装形式。
```python
def outer_func(x):
def inner_func(y):
return x + y
return inner_func
closure = outer_func(5)
print(closure(3)) # 输出: 8,这里 closure 仍保留了 outer_func 中的局部变量 x 的值
```
阅读全文