web-dev-qa-db-ja.com

Python-定数リストまたは辞書を定義する最良/クリーンな方法

スタックオーバーフローの初めてのユーザー。

INTRO:私は最近、Pythonプログラミングの世界への魔法の冒険を始めました-私はそれが大好きです。今ではCからの厄介な移行ですべてが順調に進んでいますが、 HEADERファイル(.h)と同義です。

問題:中規模の辞書とリスト(約1,000個の要素)、長い列挙、および「#defines」(実際にはそうではありません)がありますが、それらをすべて整理するためのきれいな方法が見つかりません。 Cでは、それらをすべてヘッダーファイルに入れて、それについてもう一度考えることはありませんが、Pythonそれは不可能です。

現在の汚い解決策:MODULEまたはFUNCTION(複数の機能で必要な場合はモジュール)の上部にあるすべてのCONSTANT変数を初期化しています。

結論:誰かが定数変数をきれいに整理する方法を思いついたら、私は永遠に感謝します。

ありがとうSOたくさん!

30
TSmith

定数を独自のモジュールに入れます。

# constants.py

RED = 1
BLUE = 2
GREEN = 3

次に、そのモジュールをインポートし、定数を使用します。

import constants

print "RED is", constants.RED

定数には任意の値を指定できます。ここでは整数を示しましたが、リストと辞書は同じように機能します。

21
Ned Batchelder

通常、私はこれを行います:

ファイル:constants.py

CONSTANT1 = 'asd'
CONSTANT_FOO = 123
CONSTANT_BAR = [1, 2, 5]

ファイル:your_script.py

from constants import CONSTANT1, CONSTANT_FOO
# or if you want *all* of them
# from constants import *

...

これで、定数は1つのファイルにまとめられ、うまくインポートして使用できるようになりました。

9
Blender

個別のファイルconstants.pyを作成し、グローバルに関連するすべての定数をそこに入れます。次に、import constantsconstants.SPAMとして参照するか、(疑わしい)from constants import *を実行して、単にSPAMまたはEGGSとして参照します。

ここにいる間、Pythonはconstant定数をサポートしていません。慣例はALL_CAPSで名前を付け、変更しないことを約束することです]それら。

3
tsm