定義
1
2
| def function_name([arg1,[,arg2[,...]]]):
proc_A
|
のように定義する。
xを2乗して返す関数squareは以下のように定義できる。
1
2
3
4
| >>> def square(x):
return x * x
>>> square(2)
4
|
変数のスコープ
squareの実行後もxの値が変わらない。squareの仮引数 x は、その関数が実行されている間だけ有効である。このような変数をローカル変数と呼ぶ。
Pythonでは関数の引数に加えて、関数の中で新しく作成した変数もローカル変数である。Pythonは変数の値を求めるとき、最も内側のネストから探してゆく。そして最初に見つかったものを利用する。以下に例を示す。
1
2
3
4
5
6
7
8
9
| >>> x = 10
>>> y = 20
>>> def hoge(x):
print x
print y
>>> hoge(100)
100
20
|
デフォルト引数
関数にはデフォルトの引数を設定できる。デフォルト引数を設定する際は、デフォルト引数の無いものを先に記述しなければならない。
1
2
3
4
5
6
7
8
9
| >>> def foo(a, b = 10, c = 100):
print a, b, c
>>> foo(1)
1 10 100
>>> foo(1, 2)
1 2 100
>>> foo(1, 2, 3)
1 2 3
|
キーワード引数
引数名を指定して引数を設定することができる。
1
2
3
4
5
| >>> def foo(a, b = 10, c = 100):
print a, b, c
>>> foo(1, c = 30)
1 10 30
|
辞書を展開して引数とする
以下のようにすると、辞書の各要素をそのまま引数にできる。
1
2
3
4
5
6
| >>> dic1 = {'a': 10, 'b': 20, 'c': 30}
>>> def foo(a = 1, b = 2, c = 3):
print a, b, c
>>> foo(**dic1)
10 20 30
|
リストを展開して引数とする
以下のようにすると、リストの各要素をそのまま引数にできる。
1
2
3
4
5
6
| >>> list1 = [1, 2, 3]
>>> def foo(a, b, c):
print a, b, c
>>> foo(*list1)
1 2 3
|
可変長の引数
以下のようにすると、可変長の引数を受け取れる。可変長部はタプルに格納される。
1
2
3
4
5
6
7
8
9
| >>> def baz(a, *b):
print a, b
>>> baz(1)
1 ()
>>> baz(1, 2)
1 (2,)
>>> baz(1, 2, 3)
1 (2, 3)
|