2

Python初心者ですみません。私はこれが可能であるように感じますが、私はこのサイト (とりわけ) を隅々まで見てきました。ネストされた関数を持つ関数内の変数を直接変更することはできないようです。私はもう試した

global 

無駄に。これを回避するために再割り当てすることはできますが、後で問題が発生します。
例:

def Grrr():
    a = 10
    def nested(c):
        b = 5
        c -= b
    nested(a)
    return a

私は離れようとしています

def Grrr():
    a = 10
    def nested(c):
        b = 5
        c -= b
    a = nested(a)
    return a

それが本当に最善の方法なら、私はそれを使うと思います。ここには私よりもはるかに優れた人がいると思っただけです。

4

1 に答える 1

4

引数の使用を避け、代わりに次を使用できますnonlocal

def Grrr():
    a = 10
    def nested():
        nonlocal a
        b = 5
        a -= b
    nested()
    return a

ただし、変数を渡して変更したい場合は、それを行うことはできません†</sup>; Python には、C++ の意味での参照がありません。

†恐ろしいハッカーなしで

于 2013-07-23T04:02:32.427 に答える