0

タイトルが十分に明確であることを願っていますが、これをどのように表現すればよいかわかりません。

このコード セグメントは期待どおりに動作します (出力に 1 を含む 7 行)。

v=1
def test():
    print v
    for i in range (5):
        print v
v=1
test() 
print v

ただし、 max コマンドを関数に追加しようとすると

v=1
def test():
    print v
    for i in range (5):
        v = max(i,v)
        print v
v=1
test() 
print v

エラーが発生します:

UnboundLocalError: local variable 'v' referenced before assignment

これはいつも私を困惑させてきました。この場合、なぜv関数に送信する必要があるのですか?

4

1 に答える 1

2

まず、関数が変数を使用する場合は、常に変数を関数に渡す必要があります。

あなたが抱えている問題は、ローカル変数vを、グローバル変数ではなく、同じ変数であると Python が考えるものに割り当てようとしていることです。最初の関数は、何にも割り当てていないため機能します。

またはglobal、グローバル変数を使用して変更する場合に使用できます。

def test():
    global v
    # rest of code

ただし、変数をパラメーターとして渡すことを強くお勧めします。

于 2013-02-11T08:51:02.317 に答える