基本形
- 関数の定義は”def”で始める
- 関数名と引数の後にコロン”:”を置く
- 関数の内容にはインデントを入れて書く
1 2 3 4 |
def add(a, b): print(a + b) add(2, 3) # 5 |
呼び出しと定義
関数の呼び出しは関数定義の後でなければならない。
1 2 3 4 5 6 |
add(2, 3) def add(a, b): print(a + b) # NameError: name 'add' is not defined |
ただし、関数定義においては、後で定義される関数をそれより前の関数定義で記述することはできる。
1 2 3 4 5 6 7 |
def parent_func(): child_func() def child_func(): print('hello') parent_func() |
戻り値
戻り値がある場合はreturn文で返す。
1 2 3 4 |
def add(a, b): return a + b print( add(2, 3) ) # 5 |
複数の戻り値
複数の戻り値を返すことができる。
1 2 3 4 5 6 7 |
def multi(a, b): return a + b, a * 3 print(multi(2, 3)) # (5, 6) sum, mul = multi( 2, 3 ) print(sum, mul) # 5 6 |
引数
通常の引数
通常の引数に対しては、呼び出し時にその個数分の値を指定する。個数が多すぎても少なすぎてもTypeErrorとなる。
デフォルト値付きの引数
引数を省略した場合のデフォルト値を指定できる(キーワード付き引数)。
1 2 3 4 5 6 7 |
def func(x, y=2, z=3): print(x + y +z) func(1) # 6 (1 + 2 + 3) func(1, 4) # 8 (1 + 4 + 3) func(1, 4, 5) # 10 (1 + 4 + 5) |
可変長の引数(1)
*[引数名]は数を超えた引数をタプルで受け取る。
1 2 3 4 5 6 7 8 9 10 11 12 |
def func(a, *args): print(a) print(*args) print(args) func(1, 2, 'A') # 実行結果 # 1 # 2 A # (2, 'A') |
可変長の引数(2)
**[引数名]はキーワード付き引数を辞書型で受け取る。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def func(a, **dict): print(a) # print(**dict) # TypeError print(*dict) print(dict) func(1, key1='Val1', key2='Val2') # 実行結果 # 1 # key2 key1 # {'key2': 'Val2', 'key1': 'Val1'} |
可変長引数の引き渡し
可変長の引数を変数で引き渡す場合、引き渡し側の引数に*、**をつける。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def func(a, *args, **dict): print(a) print(args) print(dict) a = 1 args = ('A', 'B') dict = {'key1': 'Val1', 'key2': 'Val2'} func(a, *args, **dict) # 実行結果 # 1 # ('A', 'B') # {'key1': 'Val1', 'key2': 'Val2'} |