Pythonの関数の基礎2

まず、無名関数

1.無名関数

機能だけでなく、ラムダ宣言された関数を宣言するのpython defのキーワードの使用に加えて、このような機能は、匿名関数と呼ばれています。

匿名関数へ2.単純な関数

匿名関数の構文:ラムダの引数:式

0パラメータ単純な関数は匿名関数とすることができる
DEF :テスト()
     の戻り こんにちは世界

= テスト()
 プリント()#のハローワールド


匿名関数の構文:ラムダの引数:式 
テスト= ラムダこんにちは世界
B = テスト()
 印刷(b)のハローワールド#
パスパラメータ
DEF TEST2(NUM1、NUM2):
     リターン num1を+ num2の


RES = TEST2(1、2 印刷(RES)     3 

#匿名関数
TEST2 =ラムダNUM1、NUM2:NUM1 + NUM2 
RES = TEST2(1、2)
印刷(RES)#3

3.組み合わせるフィルタと無名関数

フィルタフィルタ(FUNC、イテレート可能オブジェクト) 
のLi = [12、63、78であり、90、2、45、23である]
 DEF Test3は(X):
     リターン X> 50


RES = フィルタ(TEST3、Li)と
 プリント(RES)    <フィルタオブジェクト0x000001E992A45348で> 
印刷(リスト(RES))  [63、78、90]

匿名関数に変わる 
RES =フィルタ(ラムダ X:X> 50 、Li)と
 プリント(RES)       <0x000002DA4CE25588 ATオブジェクトフィルタ> 
プリント(リスト(RES))  [63、78、90です]

関数のパラメータとして使用して4.無名関数

私たちは、単純な計算を行うと、あなたは直接、匿名関数を使用することができます

テスト= ラムダ NUM1、NUM2:NUM2 + num1を


プリント(試験(1、2))     3

この機能は、ほかの業務の目的を達成することができますが、欠点がありますが:柔軟ではない、あなたは追加の操作を行うことができます

我々は、変換によりステップによる操作ステップを向上させることができ、それは単純な計算であることができます

デフTEST4(A、B、FUNC):
    RES = FUNC(a、b)は
     戻りRES

ラムダ匿名パラメーターとして機能し、以前よりも柔軟で、適応性の強化のため 
NUM = TEST4(4、5、ラムダ A、B:A * B)
 プリント(NUM)     20

私たちは関数呼び出しに渡されたパラメータとして無名関数を置くときは、パラメータfuncを変更することにより、算術演算を実行することができますが、この引数は、その後、FUNC入力で、非常に強い実用的ではない渡さより便利に

これより柔軟で適応性のことを、入力匿名関数を実装 
FUNC = INPUTは(匿名関数を入力してください:
FUNC = のeval(FUNC)
 デフTEST4(A、B、FUNC):
    RES = FUNC(a、b)は
     戻りRES


RES4 = TEST4(23、87 、FUNC)
 プリント(RES4)   

このコードは、私たちは無限ループは、この問題を解決することができます使用して、一度だけ、一回の連続使用の手立てを数えていない実行、強化、まだ不備よりも実用的です

しばらく真:
    フラグ =入力(" 退出请按[Y / Q]:" であれば!フラグ= " Q "  フラグ=!" Y " 
        FUNC =のeval(INPUT(" 匿名関数を入力してください:" ))
        NUM1 = INT(INPUT(" NUM1を入力してください:" ))
        num2の = INT(INPUT(" NUM2を入力してください:" ))
         DEFのTEST5(NUM1、NUM2、FUNC):
             リターンFUNC(NUM1、NUM2)

        RES = TEST4(NUM1、NUM2、FUNC)
         プリント(RES)
     ブレーク

 

第二に、関数のスコープ

1.可変範囲を定義することができます役割

関数外で定義された2変数グローバル変数は、グローバル変数であります

= A こんにちは世界    グローバル変数
DEF テスト():
    A = " こんにちは"       ローカル変数の
    印刷" 1:" 、A)

印刷" 2:"、A)      2:Hello Worldの    
テスト()        1:こんにちは1 2後ろのテスト機能を呼び出した後に2であるからである。
印刷" 3:"、A)      3:Hello Worldの変数の関数定義の外

グローバルグローバル変数の関数定義の内部

= A こんにちは世界    グローバル変数
DEF テスト():
     株式会社参加無料
    A = " こんにちは"       ローカル変数の
    印刷" 1:" 、A)

印刷" 2:"、)      2:ハローワールド 
テスト()        1:ハロー   
プリント" 3:"、)      3:こんにちは

変数定義された関数内3.ローカル変数

上記の例から私たちを知って、ローカル変数は、関数の外には適用できません

4.非ローカル

この関数は、ネストされた関数で使用されています

非ローカル

1 DEF test_outと():
2 STR1 = " ハローハロー"

3     DEF test_inと():
4 STR1 = " こんにちは" 
5 STR1 + = " 世界" 
6         プリント" 1 "、STR1)     1:ハローワールド

7 test_inと()
8     プリント" 2 "、STR1)     2:ハローハロー

  test_outと()

コードが実行されるTEST_OUT()関数が呼び出されたとき、機能は、上から下に行うが、ライン7は、test_inと関数が呼び出されたときに場合、ライン6は、次に、コードを実行するための「Hello World」を印刷すること、及び8つの行うラインコード、ハローハロー印刷、反対STR1 =「hello」を予約する場合は、前者と後者とは対照的に、STR2 =「ハローハロー」変数広い役割は、ローカル変数であり、関数はtest_inとありません呼び出します

私たちは、内部関数の中で、外部関数を呼び出したい場合は、我々は、非局所使用する必要があります

デフ)(test_outと:
    STR1 = ハローハロー

    デフtest_inと():
        STR1 = "こんにちは" 
        非ローカルSTR1
        STR1 + = " 世界" 
        印刷" 1:"、STR1)     1:こんにちはこんにちは世界

    test_inと()
    印刷" 2:"、STR1)     2:ハローハローワールド

test_outと()

要約:

1.スコープはローカルスコープで、関数は、外側と呼ぶことができない局所変数として定義された内部機能

2.外部関数は、グローバル変数として定義され、その範囲はグローバルスコープを使用すると、関数内で変更したい場合は、グローバル必要があります

3.外側の関数の変数を、あなたは内側の層で変更したい場合は、必要な非ローカル

おすすめ

転載: www.cnblogs.com/zgzeng/p/12141906.html