定義

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)