私は、グローバル変数の仕組みについて少し混乱しています。私は約50のファイルを持つ大きなプロジェクトを持っており、これらのファイルすべてに対してグローバル変数を定義する必要があります。ファイル間でグローバル変数を使用していますか?
# ../myproject/main.py
# Define global myList
global myList
myList = []
# Imports
import subfile
# Do something
subfile.stuff()
print(myList[0])
私は他の方法
# ../myproject/subfile.py
# Save "hey" into myList
def stuff():
globals()["myList"].append("hey")
を以下のように、subfile.py
でmyList
を使用しようとしている:私は何
は、以下の通り、私のプロジェクトでmain.py
ファイルをそれらを定義しました試しましたが、いずれも機能しませんでした
# ../myproject/main.py
# Import globfile
import globfile
# Save myList into globfile
globfile.myList = []
# Import subfile
import subfile
# Do something
subfile.stuff()
print(globfile.myList[0])
そしてsubfile.py
の内側に私はこれでした:
# ../myproject/subfile.py
# Import globfile
import globfile
# Save "hey" into myList
def stuff():
globfile.myList.append("hey")
をしかし、再び、それは動作しませんでした。これをどのように実装すればよいですか?私はそれが2つのファイルが本当にお互いを知っていないとき(よくサブファイルはメインを知らない)、それがうまく動作しないことを理解していますが、ioの書き込みやピクルスを使わずに、私はしたくない。
実際には、2番目のアプローチはうまく動作します。 main.pyは正しく "hey"を表示します。あなたは私が「それはうまくいかない」ということでより具体的になりますか? – rodion
@rodion:サイクルをインポートする - サブファイル内のコードがglobfileをインポートしようとしました。本体がそれ自身をインポートします – jsbueno
'NameError:name 'myList'が' main.py'行から定義されていません 'print(globfile.myList [0 ]) ' –