Ich habe einen Modul Code:Scopes in Python Module
X = 88
def f():
global X
X = 99
und eine andere Datei, die dieses Modul verwendet:
from First import X,f
X = 11
f()
print(X)
Jetzt nach meinem Verständnis, da wir explizit Symbole x und f importieren sie sollte Teil des Namespace für importierende Module werden.
Und da die Funktion f das globale X ändert. Die Antwort sollte 99.
sein, aber das scheint nicht der Fall zu sein, da der Ausgang 11 ist
Bitte helfen Sie mir zu verstehen, warum?
Vielen Dank. Im Grunde bedeutet die Verwendung der from-Anweisung (von import *), dass wir nur die Objekte innerhalb des importierten Moduls verwenden können, ohne sie mit dem Modulnamen zu qualifizieren. Aber für alle praktischen Zwecke ist es das gleiche wie nur schreiben Import –
@SubhayanBhattacharya: 'von Modul-Import *' erstellt neue Namen in Ihrem Namespace für jeden Namen in 'Modul' verfügbar (was verfügbar ist, hängt von der' Modul .__ dir__' , oder '[Name für Name in Verzeichnis (Modul) wenn Name [0]! = '_']' wenn es kein 'Modul .__ Verzeichnis__' gibt. –
@SubhayanBhattacharya: 'Importmodul' hingegen setzt nur den Namen' modul' in Ihrem Namensraum. Nichts mehr. Also nein, das ist nicht wahr, 'Importmodul' ist komplett anders als' vom Modulimport *'. –