我剛開始編程,並試圖寫一些東西,但(當然)它失敗了。經過一段時間後,我遇到了真正的問題:UnboundLocalError
。因此,爲了救你脫離所有的廢墟周圍我剝代碼到這一點:如何解決UnboundLocalError?
def test():
try:
i1 = int(i1)
i2 = int(i2)
except ValueError:
print "you failed in typing a number"
def input():
i1 = raw_input('please type a number \n >')
i2 = raw_input('please type a number \n >')
於是我寫下:
>>>input()
please insert a number
> 3
please insert a number
> 2
>>>test()
然後我:
that was not a number
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in test
UnboundLocalError: local variable 'i1' referenced before assignment
哪有我用Pythonic的方式解決這個問題?或者我應該採取一種完全不同的方式?
這樣想:常規變量如'i1'和'i2'對於函數是局部的,在其外部是不可見的。你的'input'函數創建'test'未知的局部變量。如果你想訪問'test'中的數據,那麼這些數據必須是全局的(見全局變量的''global''關鍵字),或者使用函數參數明確給出它(參見CédrickJulien的回答)。根據經驗,如果可能的話應該避免使用全局變量。 – 2011-12-20 09:43:44