Wie kann ich externe Variablen in Python wie 'extern int x;' in C?

8

Wie kann ich externe Variablen in Python verwenden, wie extern int x; in C?

Zum Beispiel

main1.py:

%Vor%

myfunc.py:

%Vor%     
Je-Hoon Song 03.08.2013, 15:52
quelle

2 Antworten

6

Ordnen Sie die Variable einfach im Modul neu zu:

%Vor%

Sonst ist es nicht möglich.

Denken Sie daran, dass Python Module auf eine Weise behandelt, die ganz anders ist als C. Das import in Python kopiert nicht den Inhalt der Datei an diesem Ort, aber führt den Code in der angegebenen Datei aus und erstellt ein module -Objekt.

Die globale Variable des Moduls sind die module -Objektattribute, die wie gezeigt geändert werden können. Es gibt keine solche Idee wie "globale Variable" außer für eingebaute.

Ich würde vorschlagen, dass Sie Ihren Code so umgestalten, dass Sie diese globale Variable gar nicht ändern müssen, indem Sie den Code mit myfunc.a von main1 nach myfunc verschieben. Die Tatsache, dass Sie eine solche globale Variable benötigen, ist bereits ein Code-Geruch, dass etwas mit Ihrem Code nicht stimmt und Sie sollten versuchen, es zu beheben.

Tatsächlich gibt es einen Weg, den "globalen Spielraum" zu beeinflussen, aber es ist so hackisch, dass ich es gar nicht erwähnen möchte. Vertrau mir: Du willst es nicht benutzen. Wenn Nutzer Ihren Code mit einem solchen Hack sehen, können Sie sich in physischer Gefahr befinden.

    
Bakuriu 03.08.2013 15:56
quelle
1

Im Gegensatz zu C sind Variablen, die im globalen Gültigkeitsbereich deklariert sind, immer noch auf das Modul begrenzt, in dem sie erstellt werden. Daher müssen Sie den Namen a mit dem Modul qualifizieren, in dem er sich befindet.

Das Schlüsselwort global wird verwendet, wenn Sie eine globale Variable ändern ändern, indem Sie sie neu zuweisen. Sie benötigen sie nicht, wenn Sie nur auf eine globale Variable verweisen.

Wenn Sie versuchen, auf eine Variable einer anderen Datei zuzugreifen, müssen Sie dieses Modul importieren, und aufgrund der Struktur Ihrer Dateien haben Sie verschiedene Möglichkeiten, Probleme zu lösen:

Option 1) Verschieben Sie die Referenzierung von myfunc.print_a innerhalb einer Funktion und import main1 innerhalb von myfunc , um a

zu sehen

main1.py

%Vor%

myfunc.py

%Vor%

Option 2) empfohlen Verschieben Sie die Variable (n) in ein anderes Modul und lassen Sie myfunc und main1 importieren.

vals.py

%Vor%

main1.py

%Vor%

myfunc.py

%Vor%     
Ryan Haining 03.08.2013 16:28
quelle

Tags und Links