今さらだけどPythonのメモ(^^;)
関数
関数定義は次のようになる。
def hoge(val1, val2="hoge"):
print("hoge:" + val1 + ":" + val2)
def 関数名(仮引数): で関数を宣言する。仮引数名=値 で引数を省略したときのデフォルト値を設定できる。
この関数を呼ぶ方法は次のようになる。
hoge("abcdef") # hoge:abcdef:hoge と表示される。
あ、値を返すのを忘れていた。
def hoge5():
return 5
print(hoge5()) # 5 と表示される
関数のローカル変数とグローバル変数の参照
関数内のローカル変数は普通に変数を使えばそのままローカル変数になる。関数内からグローバル変数にアクセスするには関数内でglobalで宣言しておけば関数内からグローバル変数にアクセスできるようになる。
gval1 = "def" # グローバル変数
gval2 = "ghi"
def hoge2(val1):
val2 = "abc" # ローカル変数
global gval1 # グローバル変数gvalにアクセスできるようにする。
gval1 = val1
gval2 = val2 # ここのgval2はglobal宣言されていないので
# gval2はローカル変数になる。
print(val2)
hoge2("hogehoge") # abcと表示される。
print(gval1) # hogehogeと表示される。
print(gval2) # ghiと表示される。hoge2関数内で変更しているつもりだが、
# global宣言せずに代入しているのでgval2は変更されない。
#print(val2) # エラーになる(のでとりあえずコメントアウト)
クラス
クラスの定義は次のようになる。
class Hoge3:
val = 0
__val2 = "hoge" # __(アンダーバー2つ)でプライベート変数扱いになる
# メソッドも同様に__(アンダーバー2つ)で関数名を始めるとプライベートになる。
def __init__(self, val): # コンストラクタになる。
print("Hoge3:コンストラクタ")
self.val = val
def printVal(self):
print("Hoge3:val=" + str(self.val))
def __del__(self): # デストラクタになる。
print("Hoge3:デストラクタ")
hoge3 = Hoge3(234)
hoge3.printVal() # Hoge3:val=234 と表示される。
#print(hoge3.__val2) # __val2 はプライベート変数扱いなのでエラーになる(のでとりあえずコメントアウト)
del hoge3
クラスの継承
Hoge3クラスを継承したHoge4クラスを定義する。次のようになる。
# クラスの継承
class Hoge4(Hoge3): # Hoge3を継承する
def printVal(self): # Hoge3にある同名のメソッドを定義すると
# 上書きされたような感じになる。
print("Hoge4:val=" + str(self.val))
def printVal2(self):
super().printVal2() # super()で継承元(スーパークラス)のメソッドを参照できる。
hoge4 = Hoge4(567)
hoge4.printVal() # Hoge4:val=567 と表示される
hoge4.printVal2() # hoge3:val2=hoge と表示される
del hoge4
コメント