extern int x;Cのように Python で外部変数を使用するにはどうすればよいですか?
例えば、
main1.py:
from myfunc import print_a
a = 10
print a
print_a()
myfunc.py:
def print_a():
global a
print a
モジュールで変数を再割り当てするだけです。
import myfunc
from myfunc import print_a
a = 10
print a
myfunc.a = a
print_a()
そうでなければ、それは不可能です。
importPythonは C とはまったく異なる方法でモジュールを扱うことを思い出してください。Python では、ファイルの「内容をその場所にコピー」するのではなく、指定されたファイルのコードを実行moduleしてオブジェクトを作成します。
モジュールのグローバル変数はmoduleオブジェクト属性であり、これまでに示したように変更できます。組み込みを除いて、「グローバル変数」という概念はありません。
このグローバル変数をまったく変更する必要がないようにコードをリファクタリングして、を使用するコードをmyfunc.afrom からmain1に移動することをお勧めしますmyfunc。このようなグローバル変数が必要であるという事実は、コードに何か問題があり、それを修正する必要があるというコードの匂いです。
実際には、「グローバル スコープ」に影響を与える方法がありますが、あまりにもハックなので、言及したくありません。私を信じてください:あなたはそれを使いたくありません. このようなハッキングを使用したコードを誰かが見た場合、身体的な危険にさらされる可能性があります。
C とは異なり、グローバル スコープで宣言された変数のスコープは、それらが作成されたモジュールに制限されているため、変数が存在するaモジュールで名前を修飾する必要があります。
このキーワードは、再割り当てによってグローバル変数を変更するglobalときに使用されます。グローバル変数を参照するだけの場合は必要ありません。
別のファイルの変数にアクセスしようとしている場合は、そのモジュールをインポートする必要があります。ファイルが構造化されているため、問題を解決するにはいくつかの方法があります。
オプション 1)myfunc.print_a関数内と内部のimport main1参照を移動しmyfuncて表示するa
main1.py
import myfunc
a = 10
def main():
print a
myfunc.print_a()
if __name__ == '__main__':
main()
myfunc.py
import main1
def print_a():
print main1.a
オプション 2)推奨変数を別のモジュールに移動し、両方を持ってmyfuncインポートmain1します。
vals.py
a = 20
main1.py
import vals
from myfunc import print_a
vals.a = 10
print vals.a
print_a()
myfunc.py
import vals
def print_a():
print vals.a