3

Python の変数のスコープに関する非常に基本的な概念が欠けているに違いありませんが、何が原因かわかりませんでした。

関数のスコープ外で宣言された変数にアクセスしたい簡単なスクリプトを書いています。

counter = 0

def howManyTimesAmICalled():
    counter += 1
    print(counter)

howManyTimesAmICalled()

意外なことに、実行すると次のようになります。

UnboundLocalError: local variable 'counter' referenced before assignment

最初の行にグローバル宣言を追加する

global counter
def howManyTimesAmICalled():
    counter += 1
    print(counter)

howManyTimesAmICalled() 

エラーメッセージを変更しませんでした。

私は何を間違っていますか?それを行う正しい方法は何ですか?

ありがとう!

4

1 に答える 1

8

global counter関数定義内に追加する必要があります。(コードの最初の行ではありません)

あなたのコードは

counter = 0

def howManyTimesAmICalled():
    global counter
    counter += 1
    print(counter)

howManyTimesAmICalled()
于 2013-07-29T16:06:27.200 に答える