Python学習の基礎言語編——関数パラメータの詳細


Pythonの関数のパラメータは主に2つのパラメータ、位置パラメータとキーワードパラメータを追跡します
キーワードパラメータにはデフォルト値があり、位置パラメータにはデフォルト値がありません.
解析の原則:
  • 定義および呼び出し関数における位置パラメータは、キーワードパラメータの前の
  • に置くべきである.
  • 非任意の数の位置パラメータはキーワードパラメータによって値を伝達することができ、任意の数の位置パラメータはキーワードパラメータによって値を伝達することができない
  • .
  • 任意の数の位置パラメータの後にキーワードパラメータ(定義関数または関数伝値)
  • を接続する必要があります.
  • 任意の数の位置パラメータと任意の数のキーワードパラメータは、定義で1回のみ定義できます.
  • 任意の数のキーワードパラメータは、すべてのタイプのパラメータの次の1つに配置される:非任意の数の位置パラメータまたはキーワードパラメータ
  • .
         1.純粋な位置パラメータは、複数のパラメータ間の相対的な位置です.たとえば、次のようになります.
     def f(arge1,arge2,arge3,arge4):
         print(arge1,arge2,arge3,arge4)
         pass
     f(1,'a',3,4)#   1,a,3,4
     f(1,2,arge3=2,arge4=4)#   1,2,2,4
     #   4   ,            
     f(1)
     f(1,'a')
     f(1,'a',3)
     f(1,arge2=2,3,4)#       1

       2.純粋なキーワードパラメータは、実際にはパラメータの付与値であり、パラメータのデフォルト値を設定するために使用されます.たとえば、次のようにします.
     def f(arge1=1,arge2=2,arge3=3,arge4=4):
         print(arge1,arge2,arge3,arge4)
         pass
     f()#   1,2,3,4
     f(3)#   3,2,3,4
     f(arge3=3)#   1,2,3,4
     f(2,arge3=3)#   2,2,3,4
     #            ,       1
     f(arge3=3,3)

       3.位置パラメータはキーワードパラメータと混在しており、位置パラメータは一般的にキーワードパラメータの前に置かれます.
    def f(arge1,arge2,arge3,arge4=3):
        print(arge1,arge2,arge3,arge4)
        pass
    f(1,2,3,4)#   1,2,3,4
    f(1,2,3)#   1,2,3,3
    f(1,2,arge3=2,arge4=2)#   1,2,2,2
    f(1,2,arge3=3)#   1,2,3,3
    #               ,       1
    f(1,arge2=2,3)
    f(1,arge2=2,3,arge4=3)
    def f(arge1,arge2,arge3=3,arge4):
        print(arge1,arge2,arge3,arge4)
        pass

    二:任意の数量の位置パラメータまたはキーワードパラメータ
        1.任意の数の位置パラメータ、解析器は一般的にリストまたはtupleとしてパッケージされ、パラメータの前に「*」を付けて表示されます.
     def f(arge1,*arge2,arge3):
         print(arge1,arge2,arge3)
         pass
     f(1,*(2,2),arge3=3)#   1,(2,2),3
     f(1,(2,2),arge3=3)#   1,((2,2),),3
     def ff(arge1,arge2,*arge3):
         print(arge1,arge2,arge3)    
         pass 
     ff(1,2,*(2,2))#   1,2,(2,2)
     #               
     f(1,*(2,2),3)#      3
     f(arge1=1,*(2,2),arge3=3)#      1
     f(1,arge2=(2,2),arge3=3)#       2
     def f(arge1,*arge2,*arge3):#       4
         print(arge1,arge2,arge3)
         pass

        2.任意の数のキーワードパラメータ、コンパイラは一般的にdictとしてパッケージされ、パラメータの前に「**」と表示されます.たとえば、次のようになります.
    def f(arge1,*arge2,**arge3):
        print(arge1,arge2,arge3)    
        pass 
    f(1,3,2,4,y=2,x=1)   1,(3,2,4),{'x':1,'y':2}
    #              
    #       5
    def f1(arge1,**arge2,*arge3):
        print(arge1,arge2,arge3)    
        pass
    def f2(arge1,**arge2,arge3):
        print(arge1,arge2,arge3)    
        pass
    def f3(arge1,**arge2,arge3=4):
        print(arge1,arge2,arge3)    
        pass

    三:混載例:
    def f(arg1, arg2='hello', *args, **kwargs):
        print(arg1, arg2, args, kwargs)
    f(1,3,3)#   1,'hello',(3,3),{}
    f(1,x=1)#   1,'hello',(),{'x':1}