# Function - 可變參數( variable parameter ) ###### tags: `Python` ## 固定參數 :::info 固定引数 ::: ```python= def function(var): print(str(var)) function('BGD') >>> BGD ``` ## 可變參數(不固定且不帶識別名的參數) 想傳多個變數到function裡,我們必須要用list或tuple。 :::info 可変長引数(識別子を持たず、引数が固定ではない引数) もし複数の変数をfunctionに渡したい場合は、list または tupleを使用します。 ::: ```python= def function(array): for m in array: print('args > ' + str(m)) function(['BGD', 'ML', 7]) function(('BGD', 'ML', 'CGSS', 7)) ``` 當參數前面加一顆 * ,即代表接受了一個 tuple 參數,此即為不定數量的參數使用方法。 :::info 引数の前に*を付けると、この引数はtuple引数として受け取ります。これは個数が決まっていない引数の使い方です。 ::: ```python= def function(*args): for m in args: print('args > ' + str(m)) s = ('BGD', 'ML', 7) function(*s) function('BGD', 'ML', 7, 'CGSS') ``` ``` args > BGD args > ML args > 7 args > BGD args > ML args > CGSS args > 7 ``` ### 關鍵字參數(不固定且具識別名的參數) 參數前面加了 ** 之後,此參數即可視為非固定數量的 Dictionary,那既然是字典類型的話,當然就是具名,因此可直接使用 key / value 的處理方式。 :::info 引数の前に**を付けると、この引数は個数が決まっていない辞書として見なされます。では、辞書のため名前付きなので、 key / value の処理を直接使うことができます。 ::: ```python= def function(**kargs): for n in kargs: print('kay:' + str(n) + ' value: ' + str(kargs[n])) dir = {'BGD': 'BanG Dream!', 'ML': 'THE IDOLM@STER MILLION LIVE! ', 'CGSS': 'シンデレラガールズ'} function(**dir) ``` ``` kay:BGD value: BanG Dream! kay:ML value: THE IDOLM@STER MILLION LIVE! kay:CGSS value: シンデレラガールズ ``` ### 重點 * 參數優先順序 :::info 引数の優先順位 ::: ``` var > *args > **kwargs ``` * *args是可變參數,args接收的是一個Tuple。 * **kwargs是關鍵參數,kwargs收的是一個dict。 :::info *argsは可変長引数,argsはTupleとして受け取ります。 **kwargsはキーワード引数,kwargsはdictとして受け取ります。 ::: https://note.nkmk.me/python-args-kwargs-usage/ ページ3 https://www.atmarkit.co.jp/ait/articles/1905/21/news009_3.html