使用一个函数来创建另一个函数,一个函数位于另一个函数中,且外面的函数返回里面的函数,而不是调用它。重要的是,返回的函数能够访问其定义所在的作用域。每当外部函数被调用时,都将重新定义内部的函数。像存储其所在作用域的函数称为闭包。
name = 'watkins'
# “遮盖”问题:局部变量或参数与要访问的全局变量同名,可使用函数globals来访问全局变量
def combine(name):
print(name, globals()['name']) # pjing watkins
combine('pjing')
def multiplier(factor):
def multiplyByFactor(number):
return number * factor
return multiplyByFactor
double = multiplier(2)
triple = multiplier(3)
print(double(5), triple(3), multiplier(5)(4)) # 10 9 20
(最近更新:2019年04月12日)
本文探讨了在编程中如何使用一个函数来创建另一个函数,即闭包的概念。闭包能够访问其定义时所在的作用域,即使外部函数已经执行完毕。文章通过具体示例展示了闭包如何工作,包括如何避免局部变量与全局变量同名的问题。

240

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



