quando ho eseguito:Python exec e __name__
exec "print __name__"
la stampa __main__
.
Ma quando ho eseguito:
exec "print __name__" in {}
la stampa __builtin__
.
Come eseguire il secondo esempio per stampare anche __main__
?
Quello che cerco di ottenere è di eseguire un pezzo di codice con exec
in modo che dal punto di vista di esso sembra essere stato eseguito dalla riga di comando.
Vorrei sintonizzare il codice con ambito pulito ma il secondo esempio interrompe il codice basandosi su if __name__ == "__main__"
. Come risolvere questo?
Purtroppo non riesco a creare un file temporaneo su disco. Non c'è un modo per eseguire una stringa semplice come se fosse eseguita dalla riga di comando? E un'altra domanda sulla tua risposta: sembra che stia importando (come in "import") il file - importa o esegue il file? C'è una differenza? –
Per importare un modulo, * deve * essere eseguito. –
Nota che l'aspettativa che '__name__ == '__main __'' funzioni implica che stai eseguendo i moduli qui. –