Python函数高级特性:闭包、装饰器与注解详解
1. 闭包与函数引用规则
在Python中,内部函数可以引用外部函数的值,这在代码编写时看似很平常,但实际上有一些规则需要注意。其中一个重要规则是,内部函数必须在外部函数内部定义,仅仅将函数作为参数传入是不行的。
以下是一个示例代码:
def multiply(value):
return value * factor
def custom_operator(func, factor):
return func
import functools
multiply_by = functools.partial(custom_operator, multiply)
times2 = multiply_by(2)
try:
times2(5)
except NameError as e:
print(e)
在上述代码中,运行 times2(5) 会抛出 NameError 异常,因为 factor 未定义。这表明闭包只有在内部函数真正定义在外部函数内部时才起作用,而不是简单地传入一个函数。
2. 装饰器与包装器
2.1 包装器的基本概念
装饰器的一个常见应用是构建包装器(wrappers)。包装器是一种函数,它包含另一个函数,并在被包装函数执行前后添加额外的行为。在闭包的概念中,包装器是内部函数,而被包装的函数作为参数传递给外部函数。
超级会员免费看
订阅专栏 解锁全文
13万+

被折叠的 条评论
为什么被折叠?



