[Python] Un chiarimento su import

Peter Bittner peter.bittner a gmx.net
Mar 20 Dic 2022 10:22:32 CET


Buongiorno Gabry,

Sì e no. Le istruzioni del file importato vengono eseguite come se
fossero direttamente nel tuo file in cui importi. Se menzioni tutti
oggetti del file importato (variabili, classi, ecc.) nel tuo statement
di import esplicitamente (oppure se fai `from foo import *`, ma è bad
style!) – e solo se lo fai – avrai tutto anche nel tuo scope locale.

Provare per credere:
```
# FILE: originale.py
import uno
print(dir())

from due import bar
print(dir())
```
```
# FILE: uno.py
foo = "This is uno."
print(foo)
```
```
# FILE: due.py
bar = "This is due."
print(bar)
```

Il builtin `dir` ti mostra il contenuto dello scope corrente. Vedrai che

1. `uno` e `bar` vengono aggiunti allo scope, `foo` no perché non
viene importato.
2. i `print` nei file importati vengono eseguiti in ogni caso.

Peter


On Tue, Dec 20, 2022 at 8:41 AM <iz4apu a libero.it> wrote:
> Ciao.
> import è una di quelle istruzioni semplici solo in apparenza.
> Faccio una domanda da principiante.
> Io ho sempre usato import per aggiungere, ad un modulo, le funzionalità di un altro modulo, presenti in un diverso file.
> Ciò che aggiungo è sempre scritto, nel fileimportato, come una funzione, cioè il cui codice inizia con def Nomemodulo(…):
>
> Domando. Posso importare codice anche non scritto come definizione di funzione immagino. Ovvero, se ho un file.py che contiene una lista di assegnazione di valori a variabili o definizioni di classi, posso importarlo ed è come che abbia scritto quelle assegnazioni e quelle definizioni, direttamente nel file in cui importo, è corretto?
>
> Grazie.
> Gabry.


Maggiori informazioni sulla lista Python