定数とパッケージについて
やりたいこと
定数を用意しておいて、他のスクリプトとも共有したいので、
モジュールかパッケージにしたい。
py
LANG_DISPLAY_NAMES = {
'js': 'JavaScript',
'ts': 'TypeScript',
'py': 'Python',
'rb': 'Ruby',
'cpp': 'C++',
}
方法1. モジュール constants.py に入れる
- 利点: ファイル増えすぎない
- 不便: dictionary 等でサイズが大きいと、差分が煩雑か
constants.py
LANG_DISPLAY_NAMES = {
...,
}
呼び方:
a.py
import constants
print(constants.LANG_DISPLAY_NAMES['py'])
こうでも良い
a.py
from constants import LANG_DISPLAY_NAMES
print(LANG_DISPLAY_NAMES['py'])
方法2. パッケージ constants に入れる
- 利点: 変更時の差分が分かりやすい
- 不便: ファイルが増えすぎる可能性あり
constants/LANG_DISPLAY_NAMES.py
LANG_DISPLAY_NAMES = {
...,
}
constants/__init__.py
from .LANG_DISPLAY_NAMES import LANG_DISPLAY_NAMES
呼び方:
a.py
import constants
print(constants.LANG_DISPLAY_NAMES['py'])
補足. パッケージ案にしたが、細かい定数は1ファイルにしておきたい
constants/common.py
KEY1 = 'aaa'
KEY2 = 'bbb'
KEY3 = 'ccc'
constants/__init__.py
from .common import *
呼びかた:
constants.KEY3
と呼びたい場合
a.py
import constants
print(constants.KEY3)
constants.common.KEY3
のように呼びたい場合は、__init__.py
への記載は不要
a.py
import constants
print(constants.common.KEY3)