パッケージ内のすべてのモジュールで使用されるグローバルパッケージ変数を定義するのは難しいです。 私はこのコードを持っている:実行時にPythonのグローバルパッケージ変数を更新するには
# my_module.py
from .__main__ import GLOBAL_VAR
def print_global():
print(GLOBAL_VAR)
# __main__.py
from my_package import my_module
GLOBAL_VAR = ''
def main():
global GLOBAL_VAR
GLOBAL_VAR = 'myvalue'
my_module.print_global()
if __name__ == '__main__':
main()
を私はmy_module.print_global()
がmyvalue
を印刷することを期待し、代わりにそれは空の文字列(初期値)を出力します。 GLOBAL_VAR
宣言後のモジュールをmain()
にインポートしようとしましたが、役に立たなかったです。
GOBAL_VAR
をmain()
から再定義して、パッケージ内のすべてのサブモジュールで使用できるようにしてください。 global
キーワードを使用する代わりに、私は他のオプションも受け入れます。
編集:提案された同様の質問は、これに部分的にしか答えません。再定義のグローバルについては何もありません。
は、なぜあなたはその混乱が必要でしょうか? GLOBAL_VAR = 'myvalue''だけではないのですか? –
@AzatIbrakov私は、変数をパッケージ内のすべてのモジュールで使用できるようにしたいので、追加の引数としてすべての関数/オブジェクトに渡したくありません。助言がありますか? – makeiteasy
あなたの変数はどこから得られますか?環境/ファイル/インターネット/データベースから?あなたはそれを一度読む必要がありますか? –