Python高次関数とソートされた関数の原則

高次関数

  関数はPythonの第一級市民です

  関数もオブジェクト、呼び出し可能オブジェクトです

  関数は、通常の変数、パラメーター、戻り値などとして使用できます。

高次関数になるために必要な条件:

  1つ以上の関数をパラメーターとして受け取る

  関数を出力する

例:

def counter(base):
     def inc(step = 1 ):
        非ローカルベース
        ベース + =ステップベース=ベース+ステップ、ローカル変数を使用しますが、ベースローカル変数はありません。ローカル変数ではないとして宣言された非ローカルベースを使用する必要があります。見つけ、形成された閉鎖
        リターンベース
     戻りINCが

F =カウンタ(10 

印刷(F()) 

出力 
。11 

F1 = INCである(5 
F2 = INCである(5 
F1 である F2、F1 == F2、ID(F1) 、上記ID上記(F2) 機能の内容を比較することができない、比較をf1に変換されたメモリアドレスに変換されるF2れる

結果が偽です
「」 '
f1とf2はどちらも内部関数incを指します。counter関数が呼び出されるたびに、スタックピンを作成し、スタックをプッシュして、関数値をスタックの先頭に返す必要があります。その後、counter関数は終了しますが、クロージャーf1はinc関数のメモリアドレスを記録します、毎回新しい関数呼び出しである
ため、f1 f2メモリアドレスが異なるため、関数間で内容を比較できません。暗黙的に変換されて、f1 == f2-> f1はf2であるメモリアドレスを比較します
'' '

 

おすすめ

転載: www.cnblogs.com/alrenn/p/12728433.html