4

次のコードを実行すると、エラー メッセージが表示されます。

UnboundLocalError: 代入前にローカル変数 'a' が参照されました

a = 220.0
b = 4300.0
c = 230.0/4300.0

def fun():
    while (c > a/b):
        a = a + 1
        print a/b

if __name__ == '__main__':
    fun()

ただし、次のように変更します。

a = 220.0
b = 4300.0
c = 230.0/4300.0

def fun():
    aa = a
    bb = b
    while (c > aa/bb):
        aa = aa + 1
        print aa/bb

if __name__ == '__main__':
    fun()

それはうまくいくでしょう。どんなアドバイスや指針も素晴らしいでしょう。どうもありがとう!

4

1 に答える 1

10

global次のステートメントを使用せずにグローバル変数を変更することはできません。

def fun():
    global a 
    while (c > a/b):
        a = a + 1
        print a/b

変数がローカル変数であり、関数が呼び出されると、まだ定義されていないため、式がエラーを発生させるa = a + 1と考えるような割り当てステートメントをPythonが見るとすぐに。ac > a/ba

于 2013-05-02T07:13:46.223 に答える