Respuestas:
from file1 import *
importará todos los objetos y métodos en el archivo1
ImportError: No module named file1
Importar file1
dentro 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.
import file1
entonces.
file1.varX
cada archivo.
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 file1
mientras trabaja file2
.
Pero si realmente quieres, puedes importar todas las variables:
from file1 import *
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.
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)))
En Python
puedes 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 Python
se prefiere el lenguaje para la ciencia de datos y el aprendizaje automático, etc.
Y esta es la imagen de project structure
Dónde estoy accediendo a las variables desde .env file
donde API links
residen las claves secretas.
Estructura general:
from <File-Name> import *