関数式プログラミングと変数の役割ドメイン

1408 ワード

Pythonは局所変数xの検索に失敗し,別の関数に属する外層作用領域で検索する.変数xは関数outerのローカル変数ですが、関数innerには外層役割ドメインへのアクセス権(少なくとも読み取りと変更の権限)があります.
>>> def o():
...     x=1
...     def i():
...         print(x)
...     i()
>>> o()
1

変数の役割ドメイン:
>>> a="xss"
>>> def foo():
...      print(a)
>>> foo()
xss
>>> def foo():
...      print(locals())
...      print(globals())
>>> foo()
{}
{'foo': , '__spec__': None, 'a': 'xss', '__package__': None, '__name__': '__main__', '__doc__': None, '__loader__': , '__builtins__': }

関数プログラミング:
関数を変数として呼び出し、()で呼び出す.
>>> def add(x, y):
...     return x + y
>>> def apply(func, x, y): # 1
...     return func(x, y) # 2
>>> apply(add, 2, 1) # 3
3
>>> def outer():
···    print("xss")
...     def inner():
...         print "Inside inner"
...     return inner # 1
>>> foo = outer()
xss 
>>> foo()
Inside inner

クローズ:
閉パッケージとは、JavaScriptでは、内部関数が外部関数で宣言されたパラメータと変数に常にアクセスでき、その外部関数が返された(寿命が終了した)後でも使用できます.閉パッケージは、通常、内部変数を作成するために使用され、これらの変数は外部で勝手に変更できないとともに、指定した関数インタフェースで操作することができます.