ホームページ > バックエンド開発 > Python チュートリアル > Python の戻り関数と戻り値の秘密

Python の戻り関数と戻り値の秘密

Tomorin
リリース: 2018-08-17 17:53:35
オリジナル
1737 人が閲覧しました

私は最近 Python に触れるようになり、 Python で関数 を返すという概念を知りました。これまでは 関数の戻り値 しか知りませんでした。たとえば、Python では次のことができます。 return int、str、list、dict など。データ型。ここで言いたいのは、Python は return 関数 もサポートしているということです。

最初に、Python の return 関数サポートの基本構文を見てみましょう

def f():
    print 'call f()...'
    # 定义函数g:
    def g():
        print 'call g()...'
    # 返回函数g:
    return g
ログイン後にコピー

変数パラメータの合計を実装しましょう。通常、合計関数は次のように定義されます:

def calc_sum(*args):
    ax = 0
    for n in args:
        ax = ax + n  
    return ax
ログイン後にコピー

しかし、合計をすぐに合計する必要がなく、後続のコードで必要に応じて計算される場合はどうなるでしょうか?合計結果を返す代わりに、合計関数を返すことができます:

def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax = ax + n       
        return ax   
        return sum
ログイン後にコピー

lazy_sum() を呼び出すと、返されるのは合計結果ではなく、合計関数です:

>>> f = lazy_sum(1, 3, 5, 7, 9)
>>> f
<function lazy_sum.<locals>.sum at 0x101c6ed90>
ログイン後にコピー

合計の結果は、関数 f が呼び出されたときに実際に計算されます。

>>> f()
25
ログイン後にコピー

この例では、関数 sum を関数 Lazy_sum で定義し、内部関数 sum は外部関数 Layy_sum のパラメータを参照でき、ローカル変数. Lazy_sum が関数の合計を返すとき、関連するパラメータと変数は返された関数に保存されます. この「クロージャ」と呼ばれるプログラム構造は大きな力を持っています。

もう 1 つ注意してください。lazy_sum() を呼び出すと、たとえ同じパラメータが渡されたとしても、各呼び出しは新しい関数を返します:

>>> f1 = lazy_sum(1, 3, 5, 7, 9)
>>> f2 = lazy_sum(1, 3, 5, 7, 9)
>>> f1==f2
False
ログイン後にコピー

f1() と f2()呼び出し結果は相互に影響しません。

以上がPython の戻り関数と戻り値の秘密の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート