Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

お悩み解決【仮引数と実引数、グローバル変数とローカル変数それぞれの違い】

f:id:kenken0326:20210115173851p:plain

こんにちはPyQチームです。
今回は、仮引数と実引数、グローバル変数とローカル変数それぞれの違いを解説します。

質問

仮引数、実引数、グローバル変数、ローカル変数について教えてください。

回答

関数「定義」時の引数を仮引数と呼び、関数「呼び出し」時の引数を実引数と呼びます。

仮引数と実引数の違い

def func(a):  # 関数定義の引数は「仮引数」と呼ばれる
    return a + 1
func(123)  # 関数呼び出しの引数は「実引数」と呼ばれる

ローカル変数とグローバル変数の違い

関数の中で定義された変数をローカル変数と呼び、関数の外で定義された変数をグローバル変数と呼びます。

a = 1  # 関数の外で定義された変数は「グローバル変数」と呼ばれる
def func():
   b = 123  # 関数の中で定義された変数は「ローカル変数」と呼ばれる

仮引数は、関数の中で定義された変数なので、ローカル変数です。
関数内で「仮引数a」に値を代入しても、同名の「グローバル変数a」の値は変わりません。

関数内では、グローバル変数を参照できます。しかし、グローバル変数と同名の変数に代入すると、その変数はローカル変数になります。

関数内で、グローバル変数と同名の変数を参照した後で、代入するとエラーになるのでご注意ください。

練習

具体的に、以下のプログラムの1 ~ 4で実際に何が表示されるか、予想してみてください。

また、以下のプログラムを実際に実行して、予想が合っていたか確かめてみてください。理解が深まると思います。

a = 1
def add_one(a):   # ここの a が「仮引数」
    print('add_one', a)
    a += 1
    return a

# 1. ここで何が表示されるか?
add_one(123)   # ここの 123 が「実引数」

# 2. ここで何が表示されるか?
print('global-1', a)

# 3. ここで何が表示されるか?
a = 2
add_one(123)

# 4. ここで何が表示されるか
print('global-2', a)
Copyright ©2017- BeProud Inc. All rights reserved.