1. ホーム
  2. python

[解決済み] settings "モジュールで定数を作成する?

2023-06-30 16:37:34

質問

私はPythonに比較的新しいです。私は、様々なアプリケーション固有の定数が格納される"settings"モジュールを作成しようとしています。

以下は、私がどのように私のコードをセットアップしたいかです。

設定.py

CONSTANT = 'value'

script.py

import settings

def func():
    var = CONSTANT
    # do some more coding
    return var

Pythonのエラーが表示されます。

global name 'CONSTANT' is not defined.

私は Django のソースコードで、彼らの settings.py ファイルには、私と同じような名前の定数があります。それらをどのようにスクリプトにインポートし、アプリケーションを通して参照することができるのか、私は混乱しています。

EDIT

たくさんのご回答ありがとうございました 下記を試してみました。

import settings

print settings.CONSTANT

同じエラーが表示されます

ImportError: cannot import name CONSTANT

どのように解決するのですか?

最も簡単な方法は、settingsをモジュールにすることです。

(settings.py)

CONSTANT1 = "value1"
CONSTANT2 = "value2"

(consumer.py)

import settings

print settings.CONSTANT1
print settings.CONSTANT2

Python モジュールをインポートするとき、そこから取得する変数の前にモジュール名を付けなければなりません。もし、与えられたファイルの中でそこから使いたい値が正確に分かっているならば で、実行中に変更される心配がない場合、次のようにすることができます。

from settings import CONSTANT1, CONSTANT2

print CONSTANT1
print CONSTANT2

というのがありますが、私はこの最後のものには夢中にならないほうがいいと思います。これは、あなたのコードを読む人が、値がどこから来ているのかを見分けることを難しくします。そして、他のクライアントモジュールが値を変更した場合に、それらの値が更新されることを防ぎます。最後の方法としては

import settings as s

print s.CONSTANT1
print s.CONSTANT2

これにより、入力の手間が省け、更新が伝搬され、読者は s が設定モジュールからのものであることを読者に覚えてもらうだけです。