Importare variabili da un altro file?


135

Come posso importare variabili da un file a un altro?

esempio: file1ha le variabili x1e x2come passarle file2?

Come posso importare tutte le variabili dall'una all'altra?

Risposte:


146
from file1 import *  

importerà tutti gli oggetti e i metodi in file1


54
Nota, tuttavia, questo è generalmente qualcosa che non dovresti fare .
David Cain,

7
Come osserva David, questo inquina lo spazio dei nomi e può avere conseguenze catastrofiche mascherando oggetti e funzioni da altri moduli, compresi quelli nella distribuzione standard
ennuikiller,

11
Ho provato a farlo, ma sembra che Python non riesca a trovare il file1 , perché sto ricevendo questo errore:ImportError: No module named file1
Hilder Vitor Lima Pereira,

4
Hai avuto un __init__.pyfile? Vedi qui per maggiori dettagli.
J0ANMM,

76

Importa file1all'interno file2:

Per importare tutte le variabili da file1 senza inondare lo spazio dei nomi di file2, utilizzare:

import file1

#now use file1.x1, file2.x2, ... to access those variables

Per importare tutte le variabili da file1 allo spazio dei nomi di file2 (non consigliato):

from file1 import *
#now use x1, x2..

Dai documenti :

Sebbene sia valido da utilizzare from module import *a livello di modulo, di solito è una cattiva idea. Per uno, questo perde un'importante proprietà che Python altrimenti avrebbe - puoi sapere dove ogni nome di livello superiore è definito da una semplice funzione di "ricerca" nel tuo editor preferito. Ti aprirai anche ai problemi in futuro, se alcuni moduli aumentano funzioni o classi aggiuntive.


1
e se ho 1000 variabili da passare?
Ofek,

1
@Ofek Basta usare import file1 allora.
Ashwini Chaudhary,

1
Non importa le variabili: \
Ofek

7
importa le variabili, anche se dovrai anteporre file1.varXa ciascun file.
zmo,

43

Meglio importare esplicitamente x1 e x2 :

from file1 import x1, x2

Ciò consente di evitare inutili conflitti nello spazio dei nomi con variabili e funzioni file1durante il lavoro file2.

Ma se vuoi davvero, puoi importare tutte le variabili:

from file1 import * 

11

In realtà non è proprio lo stesso importare una variabile con:

from file1 import x1
print(x1)

e

import file1
print(file1.x1)

Anche se al momento dell'importazione x1 e file1.x1 hanno lo stesso valore, non sono le stesse variabili. Ad esempio, chiama una funzione in file1 che modifica x1 e quindi prova a stampare la variabile dal file principale: non vedrai il valore modificato.


5

La risposta di Marc è corretta. In realtà, puoi stampare l'indirizzo di memoria per le variabili print(hex(id(libvar))e puoi vedere che gli indirizzi sono diversi.

# mylib.py
libvar = None
def lib_method():
    global libvar
    print(hex(id(libvar)))

# myapp.py
from mylib import libvar, lib_method
import mylib

lib_method()
print(hex(id(libvar)))
print(hex(id(mylib.libvar)))

3

script1.py

title="Hello world"

script2.py è dove utilizziamo la variabile script1

Metodo 1:

import script1
print(script1.title)

Metodo 2:

from script1 import title
print(title)

1

In Pythonpuoi accedere ai contenuti di altri file come se fossero
una specie di libreria, rispetto ad altre lingue come java o qualsiasi altra lingua base, Questo è davvero fantastico;

Questo rende l'accesso al contenuto del file o lo importa in per elaborarlo o per fare qualsiasi cosa con esso; E questo è il motivo principale per cui Pythonè la lingua preferita per la scienza dei dati e l'apprendimento automatico ecc.;

E questa è la foto di project structure Questo

Dove accedo alle variabili da .env filedove API linksrisiedono le chiavi segrete e.

Struttura generale:

from <File-Name> import *

0

first.py:

a=5

second.py:

import first
print(first.a)

Il risultato sarà 5.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.