Pythonの覚書

python コンピュータ
python

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を閉じるコードを省略出来ます。
forfからレコード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

コメント