我想了解,python中的變量綁定工作原理。讓我們看看這個:python:如何綁定工作
def foo(x):
def bar():
print y
return bar
y = 5
bar = foo(2)
bar()
這打印出5對我來說似乎是合理的。
def foo(x):
def bar():
print x
return bar
x = 5
bar = foo(2)
bar()
這打印2,這很奇怪。在第一個例子中,python在執行期間查找變量,在第二個時候創建方法。爲什麼這樣?
要清楚:這是非常酷,並按我的願望工作。但是,我對內部條形函數如何獲取其上下文感到困惑。我想了解,發生了什麼。
編輯
我知道,局部變量有更大的優先權。我很好奇,python在執行過程中如何知道我之前調用的函數的參數。 bar
創建於foo
,x
不存在。函數創建時,它是否已將此x
綁定到參數值?
的鏈接解釋它的偉大。非常感謝。 – gruszczy 2010-11-27 15:30:54