Ich untersuche gerade die Verwendung von Modulen in Python und dachte, ich würde die Frage, die Markus in den obigen Kommentaren ("Wie importiere ich Variablen, wenn sie in Module eingebettet sind?") Stellt, aus zwei Perspektiven beantworten:
- Variable / Funktion und
- Klasseneigenschaft / -methode.
So würde ich das Hauptprogramm f1.py umschreiben, um die Wiederverwendung von Variablen für Markus zu demonstrieren:
import f2
myStorage = f2.useMyVars(0)
for i in range(0,10):
print "Hello, "
f2.print_world()
myStorage.setMyVar(i)
f2.inc_gMyVar()
print "Display class property myVar:", myStorage.getMyVar()
print "Display global variable gMyVar:", f2.get_gMyVar()
So würde ich das wiederverwendbare Modul f2.py umschreiben:
gMyVar = 0
def print_world():
print "World!"
def get_gMyVar():
return gMyVar
def inc_gMyVar():
global gMyVar
gMyVar += 1
class useMyVars(object):
def __init__(self, myVar):
self.myVar = myVar
def getMyVar(self):
return self.myVar
def setMyVar(self, myVar):
self.myVar = myVar
def print_helloWorld(self):
print "Hello, World!"
Wenn f1.py ausgeführt wird, sieht die Ausgabe folgendermaßen aus:
%run "f1.py"
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Display class property myVar: 9
Display global variable gMyVar: 10
Ich denke, der Punkt für Markus wäre:
- Um den Code eines Moduls mehrmals wiederzuverwenden, fügen Sie den Code Ihres Moduls in Funktionen oder Klassen ein.
- Um Variablen, die als Eigenschaften in Modulen gespeichert sind, wiederzuverwenden, initialisieren Sie Eigenschaften innerhalb einer Klasse und fügen Sie die Methoden "getter" und "setter" hinzu, damit Variablen nicht in das Hauptprogramm kopiert werden müssen.
- Um in Modulen gespeicherte Variablen wiederzuverwenden, initialisieren Sie die Variablen und verwenden Sie Getter- und Setter-Funktionen. Die Setterfunktionen würden die Variablen als global deklarieren.