Pythonローカル関数

上記の関数はすべてグローバルスコープで定義されており、すべてグローバル関数です。Pythonは、関数本体で固定関数もサポートしています。関数本体で定義されたこのような関数は、ローカル関数と呼ばれます。

デフォルトでは、ローカル関数は外部の世界から隠されています。ローカル関数は、それらの囲み関数内でのみ有効です。囲み関数は、ローカル関数を返し、プログラムが他のスコープでローカル関数を使用できるようにすることもできます。

>>> def ca(type、nn):
     def square(n):
         return n * n
     def cube(n):
         return n * n * n
     def fac(n):
        結果 = 1
         のための I における範囲(2、N + 1 ):
            result * = i
         type == ' square 'の場合は結果を
     返します:
         return square(nn)
     elif type == ' cube ' return cube(nn)
     else 
        fac(nn)を返す

        
>>> ca(' スクエア'、3  9
>>> ca(' キューブ'、3  27

  >>> ca( ''、3)
  6
  >>> ca( ''、4)
  24
  >>> ca( '3'、3)
  6

ローカル関数の変数も、それが含まれている関数のローカル変数を不明瞭にします。
>>> def foo():
    name = ' bob ' 
    def bar():
         print (name)
        名前 = ' jeff '
    バー()

>>> foo()
トレースバック(最新の呼び出しが最後):
  ファイル" <pyshell#174> "、行1、 <モジュール>
    foo()
  ファイル" <pyshell#173> "、6行目foo
    バー()
  ファイル" <pyshell#173> "、4行目バー
     プリント(名前)
UnboundLocalError:割り当て前に参照されるローカル変数' name '
コードを表示

Pythonはnonlocalキーワードを提供します。nonlocalステートメントを使用して、アクセス割り当てステートメントが、関数が配置されている関数のローカル変数のみにアクセスすることを宣言できます。

>>> def foo():
    name = ' bob ' 
    def bar():
        非ローカル名
        印刷(名前)
        名前 = ' jeff '
    バー()

    
>>> foo()
ボブ
コードを表示

非ローカル関数とグローバル関数はほぼ同じです。違いは、グローバル変数はグローバル変数を宣言するために使用され、非ローカル変数は、現在の関数が配置されている関数のローカル変数を宣言するために使用されることです。

 

おすすめ

転載: www.cnblogs.com/inuyashalove/p/12752023.html