ちゃりけんnote

趣味(ゲームなど)や仕事(IT系)のことについて

python- デフォルト引数とキーワード引数

 

 

 

f:id:grau1129:20181022172045p:plain

 

 

デフォルト引数、キーワード引数の使い方を学んだ。例えばこのコード

f:id:grau1129:20181121141730p:plain

使えるととても便利らしい

 

 

さらに

hello関数に引数を追加してみる 

f:id:grau1129:20181121142644p:plain

 ここでデフォルト引数以外の引数を必須引数と呼ぶ。

必須引数が定義されると返す時に引数の指定が必要。(位置引数、キーワード引数)

 

 

注意点

関数定義の時の引数のかく順番は①必須引数②デフォルト引数の順である。そうでないとエラーを吐く。

今回はキーワード引数を使って書いているが、使わなくてもできることはできる。

しかしデフォルト引数がある時は、キーワード引数を指定したほうがわかりやすい。

 

 

次にこのようなコードを考えてみる。

f:id:grau1129:20181122093226p:plain

関数の引数の前にアスタリスクを1つつけると、位置引数を任意の数だけタプル型で格納。

 

またアスタリスク二つでキーワード引数を任意の数だけ辞書型で格納。

f:id:grau1129:20181122095157p:plain

 

また以下のコードには必須引数、デフォルト引数の間にアスタリスクをひとつだけ追加している。

これはキーワード専用引数と呼ばれるものである。

f:id:grau1129:20181122101442p:plain

 これは引数を呼び出すときにキーワード引数しか受け付けない、というもので、仮に位置引数を指定するとエラーを吐き出す。便利だがあまり使う人は少ない。

 

 

デフォルト引数にリストを渡すときに注意することがある。

仮に0から9の数字が入っているリストを3つ作りたいと思う。

f:id:grau1129:20181122104546p:plain

 

3つ異なる変数をよびだす。

f:id:grau1129:20181122104803p:plain

思ったのと違った。

これは引数に空のリストのようなミュータブルなオブジェクトを指定することによって起きる。

create_int_list()が呼び出されるたびに空リストが作られるわけではなく、使いまわされる。

 

対策

f:id:grau1129:20181122111100p:plain

if文を追加することで、numbersをいちいち初期化。