1. ホーム
  2. python

[解決済み] Python非局所文

2022-03-23 18:48:23

質問

Pythonの nonlocal 文は何をするのですか (Python 3.0 以降)?

Pythonの公式サイトにはドキュメントがなく help("nonlocal") も動作しません。

解決方法は?

を使用せずに比較してみましょう。 nonlocal :

x = 0
def outer():
    x = 1
    def inner():
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)

# inner: 2
# outer: 1
# global: 0

これに対して nonlocal で、ここで inner() 's x は、現在も outer() 's x :

x = 0
def outer():
    x = 1
    def inner():
        nonlocal x
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)

# inner: 2
# outer: 2
# global: 0

仮に global を結合することになります。 x を適切な "global" 値に変換します。

x = 0
def outer():
    x = 1
    def inner():
        global x
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)

# inner: 2
# outer: 1
# global: 2