変数を指定しないdef の書き方(*args, *kwargs)
絶対覚えておいたほうがいい!変数の数が不特定な場合でも対応できるdefの作り方
例えば
計算機アプリを作るとして、足し算の機能を作成するとする場合
def add(n1, n2):
return n1 + n2
が基本的なコーディングになるが、この状態だと足し算は1回しかできない。
5+ 5+8 +10 とかになると毎回add()を起動させないといけなくなる。
でも、*argsを使うことで()内の変数を指定せずに計算が無限にできる。
def add(*args):
sum = 0
for n in args:
sum += n
return sum
addの()に*argsを入れ、中でforを回して合計を出力するという書き方にすると
add(4,5) = 9
add(54,6,3,4,5,6) = 78
とかなり柔軟に計算ができるようになる。
*argsのargsは他の言葉でもよくて、argsの文字ではなく*+変数名でこの機能が使えるということ。
同じように、キーワードもコーディングや入力する要素が固定しない場合は
**kwargsを使うことで効率よくコーディングができる。
def calculate(n, **kwargs):
n += kwargs["add"]
n *= kwargs["multiple"]
n -= kwargs["subtraction"]
n /= kwargs["division"]
return n
print(calculate(2, add=3, multiple=4,subtraction=0,division=1))
最初の数が2で、
この場合は n=2 += (add=3) なので 5
n=5 *= (multiple=4) なので 20
…
という感じになる。