# 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