pythonの可変長引数についてのメモ
あらまし
pythonで覚えたことをメモっておきます。
過去記事の一覧はこちら。 記事一覧 - Baggage Claim
可変長引数
pythonのクラス何もわからんと思いQiitaなどを漁っていたところ、 可変長引数についていい記事を見つけたのでメモっておく。リンクは貼っていいのかよくわからないのでスルー。
可変長引数とは、関数の引数に個数を指定したくないときに使うものである。慣例として、*args や **kwargs などと記すが、大事なのは * の数である。
* ひとつの場合
このときは、任意の数の引数をタプルで受け取る。
def func1(*args): print("{}".format(args)) print(type(args)) temp = str(30) func1(10, "20", temp) # (10, "20", "30") # <class 'tuple'> func1([0,2,3], [4,5,6]) # ([0,2,3], [4,5,6]) # <class 'tuple'> func1() # () # <class 'tuple'>
* ふたつの場合
このときは、任意の数の引数を辞書で受け取る。 キーはstr型に変換され、バリューはそのまま。
def func2(**kwargs): print("{}".format(kwargs)) print(type(kwargs)) app = str(5) func2(tomato = 1, banana = "3", apple = app) # {"tomato" = 1, "banana" = "3", "apple" = "5"} # <class 'dict'> func2(tomato = [1, 2], banana = [3, 4]) # {"tomato"= [1,2], "banana"= [3, 4]} # <class 'dict'> func2() # {} # <class 'dict'>
可変長引数と普通の引数を組み合わせることもできるが、面倒なので省略。
おわりに
これ知ってればよかったーという場面は思い返しても無いような気がする。