¿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?

Respuestas:


146
from file1 import *  

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


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.


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 * 

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.


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)))

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)

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 *

0

first.py:

a=5

second.py:

import first
print(first.a)

El resultado será 5.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.