我想了解Python(3.x)中的變量作用域,但下面是一個不起作用的代碼示例,我不知道爲什麼。不帶參數輸入的函數變量範圍
def function_a(A):
function_b()
def function_b():
print(A)
function_a(1)
導致NameError: name 'A' is not defined
所以,我認爲它的工作方式是,function_a()
和function_b()
是definid。之後,我運行function_a()
,其中A
被賦值爲1.
因此在function_a()
的範圍內存在變量A = 1。
然後function_b()
被調用並打算打印變量A
的值。 A不存在於function_b()的作用域中。因此,我認爲它會看起來更高,這將是function_a()
的範圍,因爲function_b()
在function_a()
內運行。
但很明顯,我錯了。究竟發生了什麼?
雖然它不是_directly_有關這個問題,我懷疑你會發現這篇文章有幫助:關於Python的名稱和值事實與神話(http://nedbatchelder.com/text/names.html) ,這是由SO老將Ned Batchelder寫的。 –