¿Importando variables desde otro archivo?

135

¿Cómo puedo importar variables de un archivo a otro?

ejemplo: ¿ file1tiene las variables x1y x2cómo pasarlas file2?

¿Cómo puedo importar todas las variables de una a otra?

Ofek
fuente

Respuestas:

146
from file1 import *  

importará todos los objetos y métodos en el archivo1

ennuikiller
fuente
54
Sin embargo, tenga en cuenta que esto generalmente es algo que no debe hacer .
David Cain
77
Como señala David, esto contamina el espacio de nombres y puede tener consecuencias catastróficas al enmascarar objetos y funciones de otros módulos, incluidos los de la distribución estándar
ennuikiller
11
Intenté hacerlo, pero parece que Python no puede encontrar el archivo1 , porque recibo este error:ImportError: No module named file1
Hilder Vitor Lima Pereira
44
¿Tenías un __init__.pyarchivo? Ver aquí para más detalles.
J0ANMM
76

Importar file1dentro file2:

Para importar todas las variables del archivo1 sin inundar el espacio de nombres del archivo2, use:

import file1

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

Para importar todas las variables del archivo1 al espacio de nombres del archivo2 (no recomendado):

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

De los documentos :

Si bien es válido para usar from module import *a nivel de módulo, generalmente es una mala idea. Por un lado, esto pierde una propiedad importante que Python tiene de otra manera: puede saber dónde se define cada nombre de nivel superior mediante una simple función de "búsqueda" en su editor favorito. También se abre a problemas en el futuro, si algún módulo desarrolla funciones o clases adicionales.

Ashwini Chaudhary
fuente
1
y si tengo 1000 variables para pasar?
Ofek
1
@Ofek Solo usa import file1 entonces.
Ashwini Chaudhary
1
No importa las variables: \
Ofek
77
importa las variables, aunque tendrá que anteponer file1.varXcada archivo.
zmo
43

Lo mejor es importar x1 y x2 explícitamente:

from file1 import x1, x2

Esto le permite evitar conflictos innecesarios de espacio de nombres con variables y funciones file1mientras trabaja file2.

Pero si realmente quieres, puedes importar todas las variables:

from file1 import * 
Chris Redford
fuente
11

En realidad, esto no es realmente lo mismo para importar una variable con:

from file1 import x1
print(x1)

y

import file1
print(file1.x1)

Aunque en el momento de la importación x1 y file1.x1 tienen el mismo valor, no son las mismas variables. Por ejemplo, llame a una función en el archivo 1 que modifica x1 y luego intente imprimir la variable desde el archivo principal: no verá el valor modificado.

Marc Rechté
fuente
5

La respuesta de Marc es correcta. En realidad, puede imprimir la dirección de memoria para las variables print(hex(id(libvar))y puede ver que las direcciones son diferentes.

# 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)))
Lei Z
fuente
3

script1.py

title="Hello world"

script2.py es donde usamos la variable script1

Método 1:

import script1
print(script1.title)

Método 2:

from script1 import title
print(title)
Ravi G
fuente
1

En Pythonpuedes acceder a los contenidos de otros archivos como si fueran
algún tipo de biblioteca, en comparación con otros idiomas como Java o cualquier idioma base, esto es realmente genial;

Esto hace que acceder al contenido del archivo o importarlo para procesarlo o hacer algo con él; Y esa es la razón principal por la que Pythonse prefiere el lenguaje para la ciencia de datos y el aprendizaje automático, etc.

Y esta es la imagen de project structure Esta

Dónde estoy accediendo a las variables desde .env filedonde API linksresiden las claves secretas.

Estructura general:

from <File-Name> import *
Imran
fuente
0

first.py:

a=5

second.py:

import first
print(first.a)

El resultado será 5.

陳仲 肯
fuente