関数
関数は、あるまとまった処理を関数として処理することができます。
関数の呼び出し
以下では関数の基本的な呼び出し方を記述しています。Pythonでは関数をdefで定義できます。関数を実行する時は、def以降に書いた関数名()を記述することで関数で定義した処理を実行することができます。
def addition():
a = 1
b = 2
c =a + b
print(c)
addition()
3
引数
関数を定義するときには、引数を設定することができます。以下の例では、引数としてaとbを設定してます。引数は関数を呼び出すときに記述することで引数を設定した関数を実行できます。
def addition(a,b):
print("a =",a)
print("b =",b)
print("a + b =",a+b)
addition(1,2)
a = 1
b = 2
a + b = 3
以下の例では、aとbを乗算の処理を行う関数を定義しています。
def func(a,b):
print("a =",a)
print("b =",b)
print("a * b =",a*b)
func(4,3)
a = 4
b = 3
a * b = 12
関数で乗算処理を行う引数は文字列に適用することできます。
def func(a,b):
print("a =",a)
print("b =",b)
print("a * b =",a*b)
func("hello",3)
a = hello
b = 3
a * b = hellohellohello
キーワード引数
引数は、キーワードを設定することもできます。関数を実行するときに、キーワードなしで引数を書いた場合は、順番通りに引数が適応されますが、キーワードを指定すれば、関数で設定した引数の順番ではなく、キーワードで設定した引数が適応されます。
def func(a,b):
print("a =",a)
print("b =",b)
print("a * b =",a*b)
func(b=9,a=3)
a = 3
b = 9
a * b = 27
デフォルト引数
デフォルト引数では、引数にあらかじめデフォルト引数を設定することができます。関数を呼び出す際は、デフォルト引数を設定していない引数のみを記述すれば、関数は自動的にデフォルト引数を適用して処理を行います。
def func(a,b=100):
print("a =",a)
print("b =",b)
print("a * b =",a*b)
func(10)
a = 10
b = 100
a * b = 1000
デフォルト引数を設定した場合でも、関数を実行する際にデフォルト引数にあたる引数も記述すれば、そちらの方の引数が適用されます。
def func(a,b=100):
print("a =",a)
print("b =",b)
print("a * b =",a*b)
func(10,200)
a = 10
b = 200
a * b = 2000
複数の引数をタプルで受け取る
引数の前に*を記述することで、引数はタプルとして受け取ることができるようになります。
def func(*args):
print(args)
func(1,2,3,4)
func(1,2,3,4,5,6,7,8,9)
(1, 2, 3, 4)
(1, 2, 3, 4, 5, 6, 7, 8, 9)
複数のキーワード引数を辞書で受け取る
引数の前に**と書くと、キーワード引数を指定することで、辞書として受け取ることができるようになります。
def func(**kwargs):
print(kwargs)
func(a=1,b=2)
func(a=1,b=2,c=3,d=4)
{'a': 1, 'b': 2}
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
リストやタプルを展開して指定
関数で設定した引数は、リスト型を受け取って実行することもできます。その場合は、リスト型を格納した変数に*を記述することで、リスト型のデータを関数の引数として実行することができます。
def func(a,b,c):
print("a =",a)
print("b =",b)
print("c =",c)
print("a + b + c =",a+b+c)
lis = [1,2,3]
func(*lis)
a = 1
b = 2
c = 3
a + b + c = 6
辞書を展開して指定
関数で設定した引数は、辞書型を受け取って実行することもできます。その場合は、辞書型を格納した変数に**記述することで、辞書型のデータを関数の引数として実行することができます。
def func(a,b,c):
print("a =",a)
print("b =",b)
print("c =",c)
print("a + b + c =",a+b+c)
dic = {'a': 1, 'b': 2, 'c': 3}
func(**dic)
a = 1
b = 2
c = 3
a + b + c = 6
戻り値を指定
戻り値は、処理した結果を返します。以下の例では、aとbで乗算した結果を返します。
def func(a,b):
return a * b
x = func(10,20)
print(x)
print(type(x))
200
<class 'int'>
def func(a,b):
return a * b
x = func(0.01,0.2)
print(x)
print(type(x))
0.002
<class 'float'>
複数の戻り値を指定
戻り値は複数の結果も返すことができます。
def func(a,b):
return a + b, a * b, a / b
x = func(10,20)
print(x)
print(type(x))
(30, 200, 0.5)
<class 'tuple'>
ラムダ式
ラムダ式は、名前を付けずに簡易的に関数を定義することができます。
func = lambda x,y:x+y
print(func(10,100))
110
mapとlistを使用すると、リスト型のデータに適用することができるようになります。
l = [0,1,2,3]
print(list(map(lambda x: x**2,l)))
[0, 1, 4, 9]