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

WBOY
リリース: 2023-04-12 14:37:20
転載
1233 人が閲覧しました

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 .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  at 0x101c6ef28> >>> f(4) 64
ログイン後にコピー

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

rreee

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

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!