参照文法とPythonの構文糖と砂糖

Pythonで、しばしば傍受、機能制御の目的を達成するために、機能パッケージにある関数を定義する際に、記号(デコレータ)@糖衣構文と呼びます。

D DEF(F):
	プリント( 'D ...')
	K = F#は、本明細書にF本来の機能保持に渡さ
	:DEF F(X)を
		リターンK(X)* 2 
	Fのように書くことができる。ここで、f戻り# (x)は、fは関数ハンドルである、)(バンド場合、コールリターンはここでしか扱います。
@d 
DEF E(X):
	リターンX 2 ** 
印刷(E(3)。)

 上記のコード例では、D @、E = D(E)、D(E)Fの戻り値、fは関数ハンドルであると同等である、ハンドルが関数E dを、戻り値は、正確でもあるが糖衣構文後、この時間は、もはや元のE-Eではないが、F、コールE(X)は、実際に、コールF(X)、すなわちD(F)(X)、K Dによって返さセーブ= F、本来の機能は、後で使用するためにkに渡されました。したがって、デコレータの動作は、元の関数の戻り値2倍に拡張したものです。

D ...
 18

プリントの値として、元の関数の拡張は、2倍の値を返し正当化します。

糖衣構文、パラメータ、以下のコードであってもよいです。

DEF (X、Y):
     DEF B(F):
        K = F
         DEF F(Z):
             リターン X * Y * K(z)の
         リターンF
     リターンBの
@a( 2,3 DEF E(X):
     リターン X ** 2
 プリント(E(5))

、(2,3)、E =(2,3)から(e)と等価である@、(x、y)の関数は、ハンドルを返す必要があり、同じ説明、および機能は、パラメータ関数ハンドルeとして取り扱うことが必要ですこれは、パッケージEを呼び出すときに実際の装飾は、K = Fにより、保存された元の関数ハンドルは、Bは、(B)は、着信であること、機能ハンドラコードBであります、fが実際に呼び出され、FリターンX * Y * K(z)は、関数は、元の値は、x * yの倍拡大程度で戻り、バック。

150

おすすめ

転載: www.cnblogs.com/johnyang/p/12173751.html