Wie kann ich die Verwendung von externen Variablen in Python wie " extern int x;' in C?
Wie kann ich die Verwendung von externen Variablen in Python, wie extern int x;
in C?
Beispielsweise
main1.py:
from myfunc import print_a
a = 10
print a
print_a()
myfunc.py:
def print_a():
global a
print a
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach neu zuweisen, wird die variable im Modul:
Anders ist es nicht möglich.
Erinnern, dass python behandelt Module in einer Weise, die ganz anders ist, als C.
Die
import
in python macht nicht "kopieren Sie den Inhalt" der Datei an diesem Ort,aber es führt den code in der angegebenen Datei und erstellt eine
module
Objekt.Die globalen Variablen des Moduls sind die
module
- Objekt Eigenschaften, die geändert werden kann, wie ich gezeigt habe. Gibt es keinen solchen Begriff, wie "Globale variable" außer für built-ins.Ich würde vorschlagen, umgestalten von code in einer Weise, die Sie nicht ändern müssen, um diese Globale variable überhaupt, verschieben Sie den code, der verwendet
myfunc.a
ausmain1
zumyfunc
.Die Tatsache, dass Sie brauchen solche globalen Variablen ist bereits ein code smell, dass es etwas falsch mit Ihrem code, und Sie sollten versuchen, es zu beheben.
Tatsächlich gibt es einen Weg, Einfluss auf den "global scope", aber es ist so hackish, dass ich gar nicht wollen, es zu erwähnen. Vertrauen Sie mir: Sie wollen nicht, es zu benutzen. Wenn die Menschen sehen Ihren code mit solchen hack können Sie in physische Gefahr.
a
variable ausmain1
, nicht nur eine Kopie davonmyfunc
. Wenn der Wert vona
änderungen inmain1
dies nicht, werden sich inmyfunc.a
es sei denn, Sie manuell ändern es wie auch jedes mal, wenn Sie ändern es inmain1
.a
wird sich nicht ändern, was Sie inmyfunc.a
. Dieses Verhalten ist völlig Verschieden von derextern
-wie Verhalten OP ist für Fragen.a = something
in einem Modul ändert sich der Wert in der anderen, daher müssen Sie manuell neu zuweisen, wird der Wert zu jedem Modul jedes mal, wenn Sie zuweisen möchten, die variable. Als ich sagte in meiner Antwort, es ist ein Weg, um "genau" das Verhalten der OP will(mit einer leicht anderen syntax), aber ich werde nicht, um es hier zu setzen, da es dazu führen könnte Menschen zu Lesen die Antwort, um es zu verwenden, was niemand will.Anders als in C, Variablen, die im globalen Rahmen noch immer im Umfang begrenzt, um das Modul in der Sie erstellt wurden, so dass Sie brauchen, um sich zu qualifizieren, der name
a
mit dem Modul in dem es lebt.Den
global
- Schlüsselwort wird verwendet, wenn Sie gehen, um ändern einer globalen variable zugewiesen wird, die Sie nicht brauchen, wenn Sie nur verweisen auf eine Globale variable.Wenn Sie versuchen, Zugriff auf eine variable von einer anderen Datei, die Sie importieren müssen, das Modul, und wegen der Art, wie Sie Ihre Dateien strukturiert sind, haben Sie ein paar Möglichkeiten, um Probleme zu beheben:
Option 1) Bewegen Sie den verweisen der
myfunc.print_a
innerhalb einer Funktion undimport main1
innenmyfunc
zu sehena
main1.py
myfunc.py
Option 2) empfohlen Verschieben Sie die variable(N) in einem anderen Modul haben und beide
myfunc
undmain1
importieren.vals.py
main1.py
myfunc.py
Dies ist eine Problemumgehung für dieses problem durch die Verwendung eines gemeinsamen externen Datei. In diesem Beispiel bin ich die Speicherung eines index-variable Kennzeichnen, die in jeder Anwendung, ob eine Datei zugegriffen wird. Die variable indxOpen in ext1.py und indxO in ext2.py aktualisiert und gespeichert in einer gemeinsamen externen text-Datei "externalVars.txt"
führen Anwendung ext1.py
ext2.py nach der Anwendung