5章関数
関数はPythonプログラムにおける基本的な構成要素です。この章では、関数定義、関数の適用、スコープ、クロージャ、デコレータ、関数型プログラミングについて説明します。特に、関数に関するさまざまなイディオム、評価モデル、パターンに着目します。
5.1 関数定義
関数はdef文で定義します。
def add(x, y):
return x + y
関数定義はまず関数名と仮引数(parameter)を指定します。関数本体は関数が呼び出された際に実行される一連の文です。関数に実引数(argument)を適用するにはa = add(3, 4)のように関数名の後に括弧で囲んだ実引数を記述します。実引数は、関数本体が実行される前に左から右へ完全に評価されます。例えば、add(1 + 1, 2 + 2)はまずadd(2, 4)と評価されてから実引数が関数へ適用されます。これは作用的順序(applicative evaluation order)と呼ばれています。実引数の順序と個数は、関数定義で指定された仮引数の順序と個数に一致しなければなりません。不一致ならばTypeError例外が発生します。関数を呼び出す構造(必要な実引数の数など)は、関数シグネチャとも呼ばれます。
5.2 デフォルト引数
関数定義で仮引数に値を指定するとデフォルト値を設定できます。デフォルト値を指定した仮引数はデフォルト引数と呼ばれます。
def split(line, delimiter=","):
...
デフォルト引数を定義した場合、デフォルト引数とそれ以降の仮引数は省略可能です。デフォルト引数の後に、デフォルト値を持たない仮引数は定義できません。
デフォルト引数の値は関数が呼び出されるたびに評価されるのではなく、関数が最初に定義された際に一度だけ評価されます。このため、ミュータブルオブジェクトがデフォルト値として定義されている場合、思わぬ動きをします。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access