Python_関数の向上

27020 ワード

Python_関数の向上
1.変数の役割ドメイン
  • ローカル変数:関数体の内部でのみ有効です.≪アクション|Action|emdw≫:関数ボディの内部にデータを一時的に保存します.すなわち、関数呼び出しが完了すると、ローカル変数が破棄されます.
  • def testA():
        a=100
        print(a)  #       ,    a  
    
    testA()
    print(a)  #  ,a     ,        
    
  • グローバル変数:関数内、外で有効な変数.
  • a=100
    
    def testA():
        print(a)
    
    def testB():
        print(a)
    
    testA()   #100
    testB()   #100
    

    注:グローバル変数の値を変更する
    a=100
    
    def testA():
        print(a)
    
    def testB():
        a=200   #   a     
        print(a)
    
    testA()   #100
    testB()   #200
    print(a)   #100
    
    a=100
    
    def testA():
        print(a)
    
    def testB():
        global a   #      
        a=200   #   a     
        print(a)
    
    testA()   #100
    testB()   #200
    print(a)   #200
    

    2.多関数プログラム実行プロセス
  • 共通グローバル変数
  • a=10
    
    def testA():
        global a
        a=100
        print(a)
    
    def testB():
        print(a)
    
    testB()  #10        testA
    testA()   #100          
    testB()   #100      testA
    print(a)   #100          
    
  • は、パラメータとして
  • を返す.
    def testA():
        return 20
    
    def testB(num):
        print(num)
    
    result=testA()   #  testA    
    
    testB(result)    #      50
    

    3.関数の戻り値注意:1つの関数に複数のreturnが実行できない場合は、最初のreturnのみを実行します.1つの関数の複数の戻り値を作成できません
    def return_test():
        return 1
        return 2
    
    result=return_test()
    print(result)    #1
    

    次の関数の複数の戻り値の書き方を調整します.
    def return_test():
        return 1,2    #        
    
    result=return_test()
    print(result)    #(1,2)
    
    def return_test():
        return {
         'name':'liming','age':10}    #   {'name': 'liming', 'age': 10}
        # return [100,200]   #   [100,200]
        # return (10,20)   #  (10,20)
    
    result=return_test()
    print(result)
    

    注意:(1)return a,b書き方で、複数のデータを返す場合、デフォルトはメタグループタイプです.(2)returnの後にリスト、メタグループまたは辞書を接続して複数の値を返すことができる
    4.関数パラメータ
    4.1位置パラメータ
    位置パラメータ:関数を呼び出すと、関数定義の位置パラメータに基づいてパラメータが渡されます.注意:パラメータの伝達と定義の順序と個数は一致しなければならない.
    def stu_info(name,age,sex):
        print(f'     {name},   {age},   {sex}')
    
    # stu_info('liming',20,' ')    #     liming,   20,    
    # stu_info('liming',20)   #  ,          
    stu_info(20,'liming',' ')   #            ,         
    

    4.2キーワードパラメータキーワードパラメータ:「キー=値」の形式で指定することで、関数をより明確にし、使いやすくすることができ、同時にパラメータの順序要求もクリアした.注意:関数呼び出しでは、位置パラメータがある場合、位置パラメータはキーワードパラメータの前にある必要があります(前にない場合はエラーが報告されます).ただし、キーワードパラメータの間には優先順位はありません.
    def stu_info(name,age,sex):
        print(f'     {name},   {age},   {sex}')
    
    stu_info('liming',age=20,sex=' ')    #     liming,   20,    
    stu_info('Tom',sex=' ',age=27)      #     Tom,   27,    
    

    4.3デフォルトパラメータ
    ≪デフォルト・パラメータ(デフォルト・パラメータ)|Default Parameters(Default Parameters)|ldap≫:関数を定義し、パラメータにデフォルト値を指定します.関数を呼び出すと、デフォルト・パラメータの値が送信されなくてもかまいません.注:(1)すべての位置パラメータは、関数定義と呼び出しを含むデフォルトパラメータの前に表示する必要があります.(2)関数呼び出しの場合、デフォルトパラメータに値を渡すとデフォルトパラメータ値が変更されます.そうでない場合は、このデフォルト値を使用します.
    def stu_info(name,age,sex=' '):
        print(f'     {name},   {age},   {sex}')
    
    stu_info('liming',20)     #     liming,   20,    
    stu_info('Rose',12,' ')    #     Rose,   12,    
    

    4.4不定長パラメータ
    不定長パラメータ(可変パラメータ):呼び出し時に何個のパラメータが渡されるか、パラメータが渡されないかを判断しない場合に使用します.
  • ラップ位置伝達(パケット):伝達されたすべてのパラメータはargs変数によって収集され、伝達パラメータの位置に基づいてメタグループに結合され、argsはメタグループタイプである.
  • def stu_info(*args):
        print(args)
    
    stu_info('Tom')    #('Tom',)
    stu_info('Tom',29)   #('Tom', 29)
    stu_info()    #()
    
  • ラップキーワード転送(パケット):転送されたすべてのパラメータはkwargs変数によって収集され、転送パラメータの位置に基づいて辞書に結合され、kwargsは辞書タイプである.
  • def stu_info(**kwargs):
        print(kwargs)
    
    stu_info(name='liming',age=20)     #{'name': 'liming', 'age': 20}
    stu_info(name='liming',age=20,sex=' ')    #{'name': 'liming', 'age': 20, 'sex': ' '}
    

    5.パケットの取り外しと交換の変数値
    5.1解体
  • 解体:ユニット
  • def return_num():
        return 100,200
    
    num1,num2=return_num()
    print(num1)     #100
    print(num2)     #200
    

    5.2変数値の交換
  • 方法1:第3の変数を用いて変数
  • を格納する
    a = 10
    b = 20
    c = 0
    c = a
    a = b
    b = c
    print(a)    #20
    print(b)    #10
    
  • 方法2:
  • a,b=10,20
    print(a)   #10
    print(b)   #20
    
    a,b=b,a
    print(a)   #20
    print(b)   #10
    

    6.引用
    6.1参照の理解
    pythonでは、値はインデックスによって渡されます.
  • intタイプ(可変タイプ)
  • a = 1
    b = a
    print(b)   #1
    
    print(id(a))     #140712041738512
    print(id(b))     #140712041738512
    
    a=2
    print(a)   #2
    print(b)   #1  (  int      )
    
    print(id(a))      #140712041738544    ( 2          ,1  )
    print(id(b))      #140712041738512
    
  • listタイプ(可変タイプ)
  • aa=[10,20]
    bb=aa
    print(bb)   #[10, 20]
    
    print(id(aa))   #2116452504136
    print(id(bb))   #2116452504136
    
    aa.append(30)  #       
    print(aa)    #[10, 20, 30]
    print(bb)    #[10, 20, 30]
    
    print(id(aa))    #2680429761096
    print(id(bb))    #2680429761096
    

    6.2参照を参照
  • 可変タイプ
  • #      
    def testA(a):
        print(a)     #100
        print(id(a))    #140711686929776
        a += a
        print(a)    #200
        print(id(a))    #140711686932976
    
    b=100
    testA(b)
    
  • 可変タイプ
  • #     
    def testA(a):
        print(a)    #[11, 22]
        print(id(a))    #2138237194824
        a += a
        print(a)     #[11, 22, 11, 22]
        print(id(a))     #2138237194824
    
    b=[11,22]
    testA(b)
    

    7.可変タイプと非可変タイプ
  • 可変タイプ:データは(1)リスト(2)辞書(3)集合
  • を直接修正することができる.
  • 不変型:データは(1)整数型(2)浮動小数点型(3)文字列(4)メタグループ
  • を直接修正できない.