関数 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)

演習

  1. 引数の値に 10 加算したものを、返り値として返す関数add_10を作成してください。 またその関数に引数として、10を与えて、その返り値を表示して下さい。
  2. 引数の値に 30 加算したものを、表示する関数add_30を作成してください。
  3. 引数の値を2つ受け取り、それを足し算したものを返り値として返す関数addを作成して下さい。 またその関数に引数として、1020を与えて、その返り値を表示して下さい。
# 関数 add_10 を作成する
def add_10(x):
    # ここに処理を書く
    pass # この行は消して下さい

# 関数 add_30 を作成する


# 関数 add を作成する


# 1. の関数を呼び出して、返り値を表示する
result = add_10(30)
print(result)

# 2. の関数を呼び出して、返り値を表示する


# 3. の関数を呼び出して、返り値を表示する


# 実行結果
# > 40
# > 60
# > None