ゼロ基礎学python-16.7 nonlocal紹介
2138 ワード
この章ではnonlocalについてお話しします
1.nonlocalの概要
nonlocalはglobalと似ていますが、ネストされた役割ドメインにのみ作用し、関数にのみ作用します.
上のコードから前の結論が得られますが、testにはclassがあり、その中のnonlocal xが働いていることに気づくかもしれませんが、逆ではありませんか?
いいえ、最外層がdefなので
より直接的なコードを与えます.
私たちは一部のコードを注釈して、しかもaの中のa 1を知らないで、この時私たちは見て、nonlocalも役に立ちます
しかし、注意すべき点は、(globalとnonlocalの違いでもある)
globalはネストされた役割ドメインから実行できますが、nonlocalで宣言された変数はすでに存在する必要があります.そうしないと、エラーが発生します.
2.応用
nonlocalは主に外層関数の変数を修正するために使用されます
次のコードを見てください.
nonlocalを使わなければxは変わりません
しかしnonlocal宣言xを用い,xはtest 2実行後,状態が変化した.
まとめ:この章では主にnonlocalとは何かを述べ,nonlocalの簡単な応用についても述べた.
この章はここまでです.ありがとうございました.
------------------------------------------------------------------
クリックしてゼロ基礎学python-ディレクトリをジャンプ
本文はブロガーのオリジナル文章で、ブロガーの許可を得ずに転載してはならない.
1.nonlocalの概要
nonlocalはglobalと似ていますが、ネストされた役割ドメインにのみ作用し、関数にのみ作用します.
>>> def test():
x=1
print("test:"+str(x))
def test2():
nonlocal x
x=3
print("test2:"+str(x))
class a:
nonlocal x
x=5
print("a:"+str(x))
def a1():
nonlocal x
x=7
print("a.a1:"+str(x))
test2()
a.a1()
print("test:"+str(x))
>>> test()
test:1
a:5
test2:3
a.a1:7
test:7
上のコードから前の結論が得られますが、testにはclassがあり、その中のnonlocal xが働いていることに気づくかもしれませんが、逆ではありませんか?
いいえ、最外層がdefなので
より直接的なコードを与えます.
>>> def test():
x=1
print("test:"+str(x))
#def test2():
# nonlocal x
# x=3
# print("test2:"+str(x))
class a:
nonlocal x
x=5
print("a:"+str(x))
def a1():
nonlocal x
x=7
print("a.a1:"+str(x))
#test2()
a()
print("test:"+str(x))
>>> test()
test:1
a:5
test:5
>>>
私たちは一部のコードを注釈して、しかもaの中のa 1を知らないで、この時私たちは見て、nonlocalも役に立ちます
しかし、注意すべき点は、(globalとnonlocalの違いでもある)
globalはネストされた役割ドメインから実行できますが、nonlocalで宣言された変数はすでに存在する必要があります.そうしないと、エラーが発生します.
>>> def test():
global x
>>> def test():
nonlocal x
SyntaxError: no binding for nonlocal 'x' found
>>>
2.応用
nonlocalは主に外層関数の変数を修正するために使用されます
次のコードを見てください.
>>> def test():
x=1
print("test:"+str(x))
def test2():
#nonlocal x
x=3
print("test2:"+str(x))
test2()
return x
>>> test()
test:1
test2:3
1
>>>
nonlocalを使わなければxは変わりません
>>> def test():
x=1
print("test:"+str(x))
def test2():
nonlocal x
x=3
print("test2:"+str(x))
test2()
return x
>>> test()
test:1
test2:3
3
しかしnonlocal宣言xを用い,xはtest 2実行後,状態が変化した.
まとめ:この章では主にnonlocalとは何かを述べ,nonlocalの簡単な応用についても述べた.
この章はここまでです.ありがとうございました.
------------------------------------------------------------------
クリックしてゼロ基礎学python-ディレクトリをジャンプ
本文はブロガーのオリジナル文章で、ブロガーの許可を得ずに転載してはならない.