【python入門】pythonチュートリアルで詰まった点(位置引数とキーワード引数について)
今回は、チュートリアルで詰まった位置引数・キーワード引数(*args **kwargs)の解説です。
- その他の制御フローツールの
4.7. 関数定義についてのところです。
・位置引数
指定した引数の順で渡されます。
例えば以下のような文の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