Damit das Modul auf den Namespace Ihres Skripts zugreifen kann, müssen Sie den Namespace an die Funktion übergeben. Zum Beispiel:
def set_a_to_three(globalDict, localDict):
localDict['a'] = 3
Nebenbei bemerkt:
>>> import foo
>>> foo.set_a_to_three(globals(), locals())
>>> a
3
Das Innere des Code wie folgt aussehen würde in diesem Fall das Globals Wörterbuch nicht erforderlich ist, aber in Fällen, in denen Sie benötigen globale Variable zu ändern, Sie müssen das Globals-Wörterbuch verwenden. Aus diesem Grund habe ich es hier eingefügt, um die Funktion erweiterbar zu machen.
Allerdings wäre es einfacher, einfach a = 3
zu setzen, wie Eli Sadoff sagte. Es ist keine gute Vorgehensweise, Namespaces anderen Programmen zu übergeben.
Was ist mit nur 'a = 3'? –
Es ist nur ein dummes Beispiel. Ich werde komplexere Sachen machen, die von 'foo' kommen und von' foo' zugewiesen werden müssen. Ich weiß jedoch, wie die Python-Zuweisung normal funktioniert. –
Nicht möglich, nein. Sie könnten eine Funktion veranlassen, die Globals zu ändern, aber sie kann nur auf die Globals des Moduls zugreifen, in dem sie definiert ist, nicht auf das, von dem sie ausgeführt wird. – poke