はじめに
ここでは、Python初心者向けに「関数」について解説していきます。
Python3系の使用を想定しています。
関数の作成
関数を作成するときは、def
を使います。
def 関数名(仮引数1、仮引数2、・・・):
の次の行は半角スペース4つ分インデントして書き始めます。
返り値はreturn
で書きます。
関数名は、組み込み関数などと同じにならないように注意が必要です。
function_1.py
def hello_python(): # 仮引数はなくても良い。
return 'Hello, Python!'
def average(a, b): # 仮引数を2つ指定する。
return (a + b) / len([a, b])
def greeting(word, n = 3): # 仮引数のデフォルト値を指定する(この例では第二引数)。
return (word * n)
関数の呼び出し
関数を作成したら、実行したい箇所で関数名を呼び出します。
関数を作成しただけで実行されるわけではありません。
function_2.py
print(hello_python())
print(average(1, 3))
print(greeting('Hello!', n = 2))
print(greeting('Bye!')) # 第二引数を指定しないとデフォルト値が使われる。
変数のスコープ
関数内で定義した変数(ローカル変数)は、関数外では同じオブジェクトとして使うことはできません。
関数外で定義した変数(グローバル変数)は、関数内で使うことはできますが、関数内での変更を反映させたい場合は、グローバル変数であることを関数の定義時に明示する必要があります。
function_3.py
def add_one(n):
a = 1
return n + a
print(add_one(2))
print(a) # 変数aが定義されていないということで、エラーになる。
function_4.py
a = 1
def add_one(n):
return n + a
print(add_one(2))
print(a) # エラーにならない。
function_5.py
a = 5
def add_one(n):
a = 1 # ローカル変数
return n + a
print(add_one(2))
print(a) # 関数内での変数aの値の変更は反映されない。
function_6.py
a = 5
def add_one(n):
global a
a = 1 #グローバル変数
return n + a
print(add_one(2))
print(a) # 関数内での変数aの値の変更が反映される。
まとめ
ここでは、Pythonにおける「関数」の基本について解説しました。
特に、変数のスコープについては注意が必要です。