一个函数位于另一个里面,外层函数返回里层函数。也就是说函数本身返回了————但并没有被调用。重要的是返回的函数还可以访问它的定义所在的作用域。

 

 
  
  1. def multiplier(factor): 
  2.         def multiplyByFactor(number): 
  3.                 return number*factor 
  4.         return multiplyByFactor 
  5.          
  6. >>>double = multiplier(2# return multiplyByFactor() and set factor=2 
  7. >>>double(5)              # call multiplyByFactor(5) and number=5, factor=2 
  8. 10 

类似multiplyByFactor函数存储子封闭作用域的行为叫做闭包(closure)