私が今までPythonを書いていて学んだことをいつでも見返せるように備忘録としてまとめます。順番は特に考えていないです。
Enum / IntEnum
member に対応する name, value を取得する
enumクラスの名前.memberの名前.name
enumクラスの名前.memberの名前.value
このように記述することで、対応する name や value を取得することができます。
value が一致する member があるか探す
enumクラスの名前._value2member_map_
このように記述することで、valueをキーとした辞書を作成することができます。
# サンプルコード
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
YELLOW = 4
def get_name_from_value(value: int) -> str:
values = Color._value2member_map_
if value in values:
return values[value].name
else:
return None
value = 3
name = get_name_from_value(value)
print("名前: {}, 値: {}".format(name, value))
# 出力: 名前: BLUE, 値: 3
value = 99
name = get_name_from_value(value)
print("名前: {}, 値: {}".format(name, value))
# 出力: 名前: None, 値: 99
name が一致する member かあるか探す
enumクラスの名前[探したいname]
このように記述することで探すことができます。ただし、対応する member が存在しない場合は KeyError が発生しますので、try-except で例外処理をしましょう。
# サンプルコード
from enum import Enum
class MyEnum(Enum):
AA = 1
BB = 2
CC = 3
def get_enum(name: str):
try:
member = MyEnum[name]
return member.value
except KeyError:
return None
# 実行例
name = "AA"
value = get_enum(name)
print("名前: {}, 値: {}".format(name, value))
# 出力: 名前: AA 値: 1
name = "ZZ"
value = get_enum(name)
print("名前: {}, 値: {}".format(name, value))
# 出力: 名前: ZZ, 値: None
その他
ターミナルで色を付ける
エスケープシーケンスを用いてターミナルに標準出力する際に色をつけることができます。
※私はWindows11のターミナルで実行しています。Windows10以前やMacなど、その他の環境で必ず同じ動作になる保証はできませんのでご注意ください。
| 文字列 | 動作 |
|---|---|
| \033[30m | 文字を黒にする |
| \033[31m | 文字を赤にする |
| \033[32m | 文字を緑にする |
| \033[33m | 文字を黄にする |
| \033[34m | 文字を青にする |
| \033[35m | 文字をマゼンタにする |
| \033[36m | 文字をシアンにする |
| \033[37m | 文字を白にする |
| \033[39m | 文字をデフォルトに戻す |
| \033[40m | 背景色を黒にする |
| \033[41m | 背景色を赤にする |
| \033[42m | 背景色を緑にする |
| \033[43m | 背景色を黄にする |
| \033[44m | 背景色を青にする |
| \033[45m | 背景色をマゼンタにする |
| \033[46m | 背景色をシアンにする |
| \033[47m | 背景色を白にする |
| \033[49m | 背景色をデフォルトに戻す |
| \033[1m | 文字を太字にする |
| \033[4m | 文字に下線を引く |
| \033[08m | 文字を不可視にする |
| \033[07m | 文字色と背景色を反転 |
| \033[0m | 全てをリセットする |
RGB値で指定する
次の形式に従うと、任意のRGB値に変更することができる
\033[38;2;R;G;Bm
例:rgb (0, 123, 67) の場合 ... \033[38;2;0;123;67m
参考: print文で色をつけてみよう
今後も何かあれば追加していきます