私はプログラミングを始めて何かを書こうとしましたが、(もちろん)失敗しました。私が本当の問題に遭遇している間に: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
どのようにすることができます私はこれをPythonの方法で解決しますか?それとも私は全く違う方法を取るべきですか?これを行うには、最も標準的な方法は、あなたのテストメソッドにパラメータを与えることである
このように考えてみましょう。 'i1'や' i2'のような通常の変数は、関数に対してローカルであり、その外側には表示されません。関数 'input'は' test'で未知のローカル変数を作成します。 'test'でデータにアクセスしたい場合、そのデータはグローバルでなければならず(グローバル変数の' global'キーワードを参照)、関数引数を使って明示的に与えなければなりません(CédrickJulienの答えを参照)。経験則として、グローバル変数は可能な限り避けるべきです。 –