関数 2
関数
複数(または単数)の処理を一つにまとめたものを関数といいます。 一度作成した関数は、後に何度でも呼び出すことができます。
作り方
defを利用して関数を作ることができます。
関数は作っただけでは実行されません。
# greetという名前の関数を作る
def greet():
print('hello')
print('こんにちは')
print('안녕하세요')
# ここまでが関数の中
# ここからが関数の外
# 関数は作っただけでは実行されない
# 関数は呼び出されて、中身が実行される
関数の実行
関数名()で関数を実行することができます。
# greetという名前の関数を作る
def greet():
print('hello')
print('こんにちは')
print('안녕하세요')
# ここまでが関数の中
# ここからが関数の外
# 関数を呼び出す
print('start')
greet()
print('end')
上記のコードは以下のような順番で実行されます。
greet の宣言(2 ~ 6 行目)
→ print('start')(10 行目)
→ greet()呼び出し(11 行目)
→ print('hello')(3 行目)
→ print('こんにちは')(4 行目)
→ print('안녕하세요')(5 行目)
→ greet()呼び出しに戻る(11 行目)
→ print('end')(12 行目)
関数の実行(複数)
一度作った関数は、何度でも呼び出すことができます。
# greetという名前の関数を作る
def greet():
print('hello')
print('こんにちは')
print('안녕하세요')
# ここまでが関数の中
# ここからが関数の外
# 関数を呼び出す
print('1')
greet()
print('2')
greet()
print('3')
greet()
引数
関数は呼び出し元から、値をもらうことができます。 この値の入った変数のことを、引数 と呼びます。
# 引数argの値を5倍した値を表示する関数
# print_5_times を作る
def print_5_times(arg):
result = arg * 5
print(result)
# => 50
print_5_times(10)
# => 100
print_5_times(20)
# => 150
print_5_times(30)
引数は複数与えることができます。
# 引数aとbの和を表示する関数print_sumを作る
def print_sum(a, b):
sum = a + b
print(sum)
# => 40
print_sum(10, 30)
# => 30
print_sum(20, 10)
# => 60
print_sum(30, 30)
返り値
関数は呼び出し元に対し、値を返すことができます。
返り値を返すときは、returnという構文を利用します。
def return_taro():
return 'taro'
human = return_taro()
# => taro
print(human)
# => taro
print(return_taro())
関数は return が呼び出された時点で実行を終了します。
def return_tarodayo():
return 'taro'
# returnが呼び出された後は
# 実行されない。
print('だよ〜!!!!!!')
message = return_tarodayo()
# => taro
print(message)
# => taro
print(return_tarodayo())
以下は標準体重を計算する例です。 読んでみましょう。
def calc_standard_weight(height):
# height を引数として受け取って、
# 標準体重 weight を返す関数
weight = height * height * 22
return weight
# 56.32000000000001 と表示される。
weight = calc_standard_weight(1.6)
print(weight)
# 71.28 と表示される
print(calc_standard_weight(1.8))
関数のスコープ
関数の中で宣言された変数は、その変数の中でしか利用することができません。 このような関数内で宣言された変数のことを、ローカル変数と呼びます。
逆に全ての関数以外の場所で宣言された変数のことを、グローバル変数と呼びます。
例 1
関数外でローカル変数を呼び出すことはできません。
# piyo はグローバル変数
piyo = 20
def sample():
# hoge はローカル変数
hoge = 10
print(hoge)
sample()
print(piyo)
# hoge なんてないと怒られる
# NameError: name 'hoge' is not defined
print(hoge)
例 2
2、14 行目で使われている piyo と、6、8 行目で使われている piyo は違う変数です。 前者はグローバル変数の piyo、後者はローカル変数の piyo となります
# このpiyoはグローバル変数
piyo = 20
def sample():
# このpiyoはローカル変数
piyo = 10
# => 10
print(piyo)
sample()
# このpiyoはグローバル変数
# => 20
print(piyo)
演習
- 引数の値に 10 加算したものを、返り値として返す関数
add_10を作成してください。 またその関数に引数として、10を与えて、その返り値を表示して下さい。 - 引数の値に 30 加算したものを、表示する関数
add_30を作成してください。 - 引数の値を2つ受け取り、それを足し算したものを返り値として返す関数
addを作成して下さい。 またその関数に引数として、10と20を与えて、その返り値を表示して下さい。
# 関数 add_10 を作成する
def add_10(x):
# ここに処理を書く
pass # この行は消して下さい
# 関数 add_30 を作成する
# 関数 add を作成する
# 1. の関数を呼び出して、返り値を表示する
result = add_10(30)
print(result)
# 2. の関数を呼び出して、返り値を表示する
# 3. の関数を呼び出して、返り値を表示する
# 実行結果
# > 40
# > 60
# > None