若是在一個內部函數裏,對在外部函數內(但不是在全局做用域)的變量進行引用,那麼內部函數就被認爲是閉包(closure)。閉包
定義在外部函數內但由內部函數引用或者使用的變量稱爲自由變量。函數
>>> def foo():
... m = 1
... def bar():
... m = 2
... return m
... print m
... return bar()
...
>>> print foo()
1spa
2作用域
結論:內部函數中對變量的操做不會對外部函數中的值產生影響,便可以使用但不能夠修改外部變量的值。
變量