對於下面的Python 2.7的代碼「分配之前本地變量引用」:賦給變量從父功能:
#!/usr/bin/python
def funcA():
print "funcA"
c = 0
def funcB():
c += 3
print "funcB", c
def funcC():
print "funcC", c
print "c", c
funcB()
c += 2
funcC()
c += 2
funcB()
c += 2
funcC()
print "end"
funcA()
我收到以下錯誤:
File "./a.py", line 9, in funcB
c += 3
UnboundLocalError: local variable 'c' referenced before assignment
但是當我註釋掉在funcB
線c += 3
,我得到下面的輸出:
funcA
c 0
funcB 0
funcC 2
funcB 4
funcC 6
end
是不是c
中的funcB
+=
和funcC
=
這兩種情況下被訪問?爲什麼不爲一個拋出錯誤,而是爲另一個拋出錯誤?
我沒有選擇讓c
成爲全局變量,然後在funcB
中聲明global c
。無論如何,關鍵是不要讓c
遞增funcB
但爲什麼它拋出錯誤funcB
而不是funcC
雖然兩者都是訪問變量這是局部或全局。
傳遞c作爲參數... – joaquin
我修改了一些代碼現在是問題的正確版本。 – crk
此鏈接也有一些信息,http://docs.python.org/faq/programming。html#why-am-i-getting-an-unboundlocalerror-when-the-variable-has-a-value –