初心者プログラマのひとり勉強部屋

若葉マークのプログラマー☺️

【python入門】pythonチュートリアルで詰まった点(位置引数とキーワード引数について)

今回は、チュートリアルで詰まった位置引数・キーワード引数(*args **kwargs)の解説です。

  1. その他の制御フローツールの
    4.7. 関数定義についてのところです。

docs.python.org






位置引数
指定した引数の順で渡されます。
例えば以下のような文のX,Yは位置引数です。

def test(X,Y):   #2つの位置引数
        print('位置引数:',X,Y)
    
test(1,2)   #X=1,Y=2

結果

位置引数: 1 2




キーワード引数
引数の前に*をつけるとキーワード引数になります。

例)*args , **kwargs (*の後は何の文字でもいい)

*が1つだとタプル型・**と2つだとディクショナリ型として渡されます。

def test(*argsY,**kwardsZ):
        print(argsY,kwardsZ)
    
test(1,2,3,4,5,dic=6,dicdic=7)

結果

(1, 2, 3, 4, 5) {'dic': 6, 'dicdic': 7}

ディクショナリ型の場合はキーとキーワードを指定できます。


混合した場合

位置引数とキーワード引数を使う場合、チュートリアルにも記載あるように、
位置引数の後にキーワード引数を指定しなければいけません。

def test(X,*argsY,**kwardsZ):  #位置引数Xの後にキーワード引数argsY,kwardsZ
        print(X,argsY,kwardsZ)
    
test(1,2,3,4,5,dic=6,dicdic=7)


結果

1 (2, 3, 4, 5) {'dic': 6, 'dicdic': 7} #位置引数が1つなので、位置引数として渡されるのは1つのみ




※参考にさせていただきました🙏
Pythonの可変長引数(*args, **kwargs)の使い方 | note.nkmk.me