使用一个函数来创建另一个函数,一个函数位于另一个函数中,且外面的函数返回里面的函数,而不是调用它。重要的是,返回的函数能够访问其定义所在的作用域。每当外部函数被调用时,都将重新定义内部的函数。像存储其所在作用域的函数称为闭包。
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日)
来源:https://blog.csdn.net/Watkins_OS/article/details/100043275