Ptyhon の ユーザ関数定義についての説明。
ユーザ定義の関数
def func(): #関数の定義 print("ABC") print("ABC") func() #関数の呼出し
ABC ABC
関数の 定義は def文を使います。
def add(x, y): # 引数をもつ関数の定義 print(x + y) add(3, 5)
8
引数(パラメータ)の設定も 多くの言語と同じ。
return 文 (戻り値)
def add(x, y): ans = x + y return ans # 戻り値の設定 n = add(3, 5) print(n)
戻り値 は return文で返します。
def add(x, y): ans = x + y # return ans # 戻り値の設定 n = add(3, 5) print(n)
None
return文 を省略すると 関数はNoneを返します。
引数の省略 と デフォルト値
def add(x, y = 10): # デフォルト値 y=10 ans = x + y return ans print(add(3, 5)) print(add(3)) # yを省略
8 13
引数には デフォルト値を設定できます。
def fun(a , L = []): # デフォルト値がリスト L.append(a) # 追加 return L print(fun(1)) print(fun(2)) print(fun(3)) print(fun(4,[])) print(fun(5))
[1] [1, 2] [1, 2, 3] [4] [1, 2, 3, 5]
デフォルト値は 1 度だけの評価です。
デフォルト値がリストのような変更可能なオブジェクトの時には、その影響がでます。
上記では、後に続く関数呼び出しで関数に渡されている引数が累積します。
累積しないようにしたい場合は
def fun(a , L = None): if L is None: L = [] # デフォルト値がリスト L.append(a) # 追加 return L print(fun(1)) print(fun(2)) print(fun(3)) print(fun(4,[])) print(fun(5))
[1] [2] [3] [4] [5]
のようにします。