Pythonでプログラミングするために学んだ内容を書き留めています。
エントリーポイント
Pythonはプログラムの開始位置となるエントリーポイントは無く、スクリプトに記述した順番に実行されます。エントリーポイントがほしい場合に以下のようなコードになります。
def main():
print('hello world!')
if __name__ == '__main__':
main()
def main()
を定義して意図的にエントリーポイントにしています。
if __name__ == '__main__':
の__name__
には実行しているモジュール名が自動的にセットされており、'__main__'
と比較することでスクリプトがモジュールで読み込まれているのでは無く単体で実行していることを判定しています。
その後main()
を呼び出しています。
配列(list)の初期化
# listオブジェクトの生成で初期化
my_list1 = list()
print(my_list1) # 結果 []
# []で初期化
my_list2 = [0, 1, 2]
print(my_list2) # 結果 [0, 1, 2]
テキストファイルを1行ごと読み込み
with open("sample.txt", "r") as f:
for line in f:
print(line.strip())
with
を使うことでopen
したファイルf
を閉じるコードを省略出来ます。
for
でf
からレコード1行分をline
に取り出します。
line
には末尾に改行コードを含んでおりprint()
も改行されて、改行が重複しますので、line.strip()
で改行コードを取り除いています。
クラス
class SuperClass:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
def sample_method(self):
print("SuperClass.sample_method()")
class SubClass(SuperClass): # SuperClassクラスを継承
def __init__(self, name):
super().__init__(name) # 親クラスのコンストラクタを呼び出す
def sample_method(self): # メソッドのオーバーライド
print("SubClass.sample_method()")
# インスタンスの生成
obj = SubClass("AAA")
# プロパティ
obj.name = "BBB"
print(obj.name) # 出力 BBB
# メソッド
obj.sample_method() # 出力 SubClass.sample_method()
コンストラクタ
def __init__(self, name):
メソッドの引数にself
正規表現で条件式
import re
pattern = r"img(\d+)\.png"
text = r"aimg001.png"
# search 文字列にパターンが含まれているか
if re.search(pattern, text):
print("ok") # 出力 ok
else:
print("ng")
# match 文字列の先頭からパターンに一致するか
if re.match(pattern, text):
print("ok")
else:
print("ng") # 出力 ng
コメント