今回は、関数とクラスについて自分が理解したことを、Python入門ページとしてまとめてみます。(備忘録です)
関数
関数とは、再利用することを目的とした機能のまとまりです。
プログラムは、関数を使わなくても書けます。
ただし、繰り返し実行する機能や、ほとんど同じだけど一部のみ違う機能を関数にしておくことで、より短い行でプログラムを作ることができます。
関数は以下のように定義します。
def 関数名(引数があれば引数):
関数で実行したい計算や処理を記載する
"""
関数の定義と呼び出し例
"""
#----- ここから関数を3つ定義します-----
# 関数1 引数なし
def print2plus3():
print('---引数なし関数---')
a=2
b=3
print('a+b=',a+b)
# 関数2 引数あり
def addprint(a,b):
print('---引数あり関数---')
print('a+b=',a+b)
# 関数3 引数あり、戻り値あり
def add(a,b):
print('---引数あり、戻り値あり関数---')
return(a+b)
#----- ここまでで関数の定義が終わりました-----
# 関数1の呼び出し(2+3を計算して表示する)
print2plus3()
# 関数2の呼び出し(渡した値を足して結果を表示する)
addprint(2,3)
# 関数3の呼び出し(渡した値を足して結果を返す)
c = add(2,3)
# 関数3の結果を表示する
print('c=',c)
実行結果は、以下になります。
---引数なし関数---
a+b= 5
---引数あり関数---
a+b= 5
---引数あり、戻り値あり関数---
c= 5
プログラムの上の方で、関数を3つ定義しています。
プログラムは上の行から下の行に向かって実行されますが、3つの関数は、定義された部分では実行されません。
プログラムの下の方で、関数名が使用された時に呼び出されます。
つまりプログラムの上の行でいろいろな関数を作っておき、下の方でそれを順番に呼び出すような使い方をします。
クラス
クラスは、関数や変数をひとまとまりにして使いやすい部品として定義したものです。(諸説あります)
Pythonのクラスは、以下のように定義します。
"""
クラスの定義と呼び出し例
"""
#----- ここからがクラスの定義 -----
# クラスの定義(この部分は呼び出されないと実行されません)
class TestClass:
# コンストラクタ(クラスが作られた時に自動的に実行される)
def __init__(self):
self.name = '名無し'
self.age = 0
# 名前を得る
def getName(self):
return self.name
# 年齢を得る
def getAge(self):
return self.age
# 名前をセットする
def setName(self, name):
self.name = name
# 年齢をセットする
def setAge(self, age):
self.age = age
# 名前と年齢を表示します
def printInfo(self):
print('私の名前は',self.name,'です')
print('私は',self.age,'才です')
#----- ここまでがクラスの定義 -----
# クラスをaという名前で使う
print('-----クラスを作ってみる-----')
a = TestClass()
a.printInfo()
print('-----名前と年齢を与えてみる-----')
a.setName('Python')
a.setAge(30)
a.printInfo()
実行結果は以下の通りです。
-----クラスを作ってみる-----
私の名前は 名無し です
私は 0 才です
-----名前と年齢を与えてみる-----
私の名前は Python です
私は 30 才です
プログラムの上の方で、クラスを定義しています。
プログラムは上の行から下の行に向かって実行されますが、クラスが定義された部分ではクラスのプログラムは実行されません。
プログラムの下の方で、クラスが使用された時に呼び出されます。
つまりプログラムの上の行でクラスを作っておき、下の方でそれを呼び出すような使い方をします。
このTestClassは、名前と年齢を内部に持ちます。
クラスを作った時は、初期値で名前が"名無し"となり、年齢が0才になります。新たな名前'Python'と年齢30才を与えると、クラス内部でその値が保持されます。
ここまでのコードをJupyterLabなどにコピペして動作を確認してみてください。動かしてみて、変更して動作がどう変わったかを見ることで少しづつ理解が深まると思います。