UdemyでPythonを勉強した結果を残すブログ。

40歳でプログラミング始めて転職までいけるのかを実録してみます。

変数を指定しない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

という感じになる。