Domanda sugli interni di Python. Se eseguo import abc
, Python legge il modulo in un nuovo spazio dei nomi e lega la variabile abc
nello spazio dei nomi globale per fare riferimento al nuovo spazio dei nomi.Eseguendo `da abc import xyz` dove va il modulo` abc`?
Se eseguo from abc import xyz
allora legge l'intero modulo abc
in qualche nuovo spazio dei nomi e quindi si lega la variabile xyz
nel namespace globale allo stesso oggetto che è destinato a xyz
in questo spazio dei nomi appena creato in cui il modulo è stato letto in. Almeno questa è la mia comprensione.
Cosa succede al dominio in cui è stato letto abc
in seguito? Suppongo che viva da qualche parte, perché xyz
potrebbe accedere ad altri oggetti in quello spazio dei nomi. È possibile accedere a questo spazio dei nomi "ghost" abc
in qualche modo?
Inoltre, sto supponendo che se faccio
from abc import xyz
from abc import fgh
allora c'è solo un "fantasma" abc
spazio dei nomi, in modo che se xyz
e fgh
modificare la stessa variabile globale in abc
, ci sarà solo una copia di esso. È corretto?
È solo per curiosità? Non c'è una vera ragione per provare ad accedere al modulo "segretamente" come questo; se si desidera accedere all'oggetto modulo, è sufficiente importarlo normalmente. – BrenBarn
Solo per curiosità, cercando di capire come funzionano le cose sotto il cofano. Faccio un sacco di lavoro sui dati, pensando di spostare parte di questo lavoro da R a Python, quindi solo costruendo una comprensione. – mrip