1

こんにちは、私は Python を学習している初心者です。本でこの例に出くわしました。何らかの理由で、同じコードを自分で試してみると、同じ出力が得られませんか? 助けてください...

def tester(start):
    state = start
    def nested(label):
        nonlocal state
        print(label, state)
        state += 1
    return nested

>>> F = tester(0)
>>> F('spam')
spam 0
>>> F('ham')
ham 1
>>> F('eggs')
eggs 2

関数を実行するたびに結果が + 1 ずつ増加しません。ブックに何か問題がありますか?

4

2 に答える 2

1

私のために働きます。本当にpython 3を使用していますか?nonlocalは python 3 の機能であり、python 2.x では機能しません。

于 2012-06-11T10:45:15.180 に答える
0

https://stackoverflow.com/a/1261961/778858にまとめられています。基本的に、python は 2.~ から 3.0 >= に大きく変更され、このような問題が発生します。本の冒頭に書かれていることと、彼らが使用しているバージョンとを比較し、自分のものと比較してください。

于 2012-06-11T10:45:50.057 に答える