ホームページ  >  記事  >  バックエンド開発  >  Python 関数プログラミング: 戻り関数と匿名関数

Python 関数プログラミング: 戻り関数と匿名関数

WBOY
WBOY転載
2023-04-12 14:37:201239ブラウズ

Python 関数プログラミング: 戻り関数と匿名関数


Return 関数

いわゆる return 関数は、その名前が示すように、関数を次のように使用します。戻り値。関数をパラメーターとして受け取るだけでなく、高階関数は結果として関数を返すこともできます。変数パラメーターの連続乗算を実装しましょう。求積関数は次のように定義できます:

def calc_fac(*args):
fx = 0
for n in args:
fx = fx * n
return fx

多くの場合、求積関数が定義されている場合、すぐに乗算する必要はありませんが、後続の関数に基づいて計算されます。計算、ライン通話。現時点では、関数の結果を返すことはできませんが、以下に示すように関数自体を返します。

def lazy_fac(*args):
 def fac():
 fx = 0
 for n in args:
 fx = fx * n
 return fx
return fac

求積関数を再定義した後、lazy_fac() を呼び出すと、返されるのはfunction 積の結果は積ですが、積関数:

>>> a=lazy_fac(1,2,3,4)
>>> a
<function lazy_fac.<locals>.fac at 0x002a5dr42>

そして、関数 a が呼び出されると、積の処理が実行されます:

>>> a()
24

この例では、次のように定義します。関数lazy_fac 関数fac、facは内部関数と呼ぶことができ、lazy_facは外部関数です。内部関数 fac は、外部関数のパラメータやローカル変数を参照できます。パラメータと変数は、最終的に返す内部関数 fac に保存されます。このプログラム構造をPythonではクロージャと呼びます。

クロージャ構造では、関数が結果として戻ったときに、関数の処理はすぐには実行されず、a() を呼び出した後に実行されます。

つまり、関数プログラミングでは、関数は計算結果を返すだけでなく、実行されていない関数を返すこともできます。関数を返すときは、その関数がまだ実行されていないことを常に念頭に置き、返される関数に変更を引き起こす可能性のあるループ変数などの変数を導入しないようにしてください。

匿名関数

関数を渡す場合、またはコード構造が複雑すぎる場合は、明示的な関数定義の代わりに匿名関数を使用できます。現時点では、匿名関数によりコード構造が大幅に簡素化され、より洗練されたものになります。

前に紹介したマップ関数を例として x3 を計算し、無名関数の機能を見てみましょう。

>>> list(map(lambda x: x * x * x, [1, 2, 3]))
[1, 8, 27]

比較からわかるように、無名関数 lambda x: x*x*x は次と同等です:

def f(x):
 return x * x * x

lambda は匿名関数のキーワードとして使用され、コロンの前の x は匿名関数のパラメーターを示します。無名関数は式を 1 つだけ持つことができ、関数の定義のように return を記述する必要はありません。無名関数には関数名がないため、使用時に関数名の競合を心配する必要がありません。関数オブジェクトとして、匿名関数は変数に値を割り当てる規則にも準拠します:

>>> fx = lambda x: x * x * x
>>> fx
<function <lambda> at 0x101c6ef28>
>>> f(4)
64

同様に、関数としての匿名関数は戻り関数としても使用できます:

rreee

以上がPython 関数プログラミング: 戻り関数と匿名関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。