こんにちは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)