要約
本日は、Pythonで以下を学びました。
関数の応用テクニック
・暗黙のタプルによる複数の戻り値
・デフォルト引数
・引数のキーワード指定
・可変長引数
はじめに
前回は「引数と戻り値」について学びました。
今回は、関数の応用テクニックについて学習します。
関数の応用テクニック
暗黙のタプルによる複数の戻り値
タプルを定義する丸カッコは、省略可能というルールがあるため、カンマで区切られた複数の値はタプルとして扱われます。
タプルの丸カッコを省略すると、処理の意味が紛らわしくなるため原則的には推奨しませんが、
関数の戻り値として記述する場合にのみ限定して、省略した記法を用いるのが一般的です。
例を見てみましょう。
#暗黙のタプルによる複数の戻り値
def plus_and_minutes(a,b):
return a + b , a - b #要素数2つのタプルを1つ返しているだけ (a + b , a - b)
next , prev = plus_and_minutes(1978, 1) #返ってきたタプルをアンパック代入しているだけ
return a + b , a – b は和と差の2つの値が戻り値のように見えますが、return が返す戻り値は常に1つです。

カッコがないと、2つの値に見えますね!
デフォルト引数
ある仮引数に想定される値が概ね想定される場合、次のようなデフォルト引数(default argument)という仕組みを使って関数を定義すると良いでしょう。
引数にデフォルト値を想定する関数の定義
def 関数名(仮引数名 = デフォルト値, …) :
処理
return 戻り値
※関数呼び出しで実引数が指定されない場合は、デフォルト値が指定されたとみなす。
※デフォルト値を指定した以降の仮引数もデフォルト値の指定が必須となる。
デフォルト引数の制約
デフォルト引数が指定された引数より後ろに、デフォルト引数がない仮引数を定義してはならない。
デフォルト引数を利用する場合は、必ず一番後ろの引数から順にデフォルト値を指定するようにしましょう。。
引数のキーワード指定
引数のキーワード指定という構文があります。
キーワードを指定した実引数は、記述した順番にかかわらず指定した仮引数に渡されます。
キーワードを指定しない実引数は、これまで通り前から順に実引数に渡されます。
引数にキーワードを指定した関数呼び出し
関数名(仮引数名1= 実引数1, 仮引数名2 = 実引数2 , …) :
※実引数に列挙された順番にかかわらず、値は指定された仮引数に引き渡される。



引数のキーワード指定をしない場合、順番通りに出力されるので、組み合わせる場合は注意が必要ですね!
可変長引数
可変長引数という構文があり、呼び出し時にn個以上の実引数を指定できます。
可変長引数を利用した関数定義
def 関数名(仮引数名1, 仮引数名2, …, *仮引数名n) :
※呼び出し時にn個以上の実引数を指定できる。
※第n引数以降に指定した実引数は、1つのタプルとして受け取る。
※第n実引数の指定が省略された場合、関数は空のタプルを受け取る。
※可変長引数は、末尾の仮引数にしか指定できない。
ちなみに、可変長引数にタプルではなく、ディクショナリを用いることもできます。
仮引数の前に付ける*を2つにすると、実引数をディクショナリとして受け取れます。
なお、可変長引数がタプルの場合は仮引数名を「*args」、
ディクショナリの場合は「**kwargs」とする慣習があります。



多くの実引数がある場合は、可変長引数を用いると便利ですね!
まとめ
本日は、Pythonで以下を学びました。
関数の応用テクニック
・暗黙のタプルによる複数の戻り値
・デフォルト引数
・引数のキーワード指定
・可変長引数
次回は「実践問題」をやっていきます。



これで基礎は終了です!
次からは実践問題をどんどんやっていきます!