Importando variáveis ​​de outro arquivo?

134

Como posso importar variáveis ​​de um arquivo para outro?

exemplo: file1tem as variáveisx1 e x2como passá-las file2?

Como posso importar todas as variáveis ​​de uma para outra?

Ofek
fonte

Respostas:

146
from file1 import *  

importará todos os objetos e métodos no arquivo1

ennuikiller
fonte
54
Observe, no entanto, isso geralmente é algo que você não deve fazer .
David Cain
7
Como observa David, este polui o namespace e pode ter consequências catastróficas por mascarar objetos e funções de outros módulos, incluindo os da distro padrão
ennuikiller
11
Eu tentei fazê-lo, mas parece que o python não consegue encontrar o arquivo1 , porque estou recebendo este erro:ImportError: No module named file1
Hilder Vitor Lima Pereira
4
Você tinha um __init__.pyarquivo? Veja aqui para mais detalhes.
precisa saber é
76

Importar para file1dentro file2:

Para importar todas as variáveis ​​do arquivo1 sem inundar o espaço de nome do arquivo2, use:

import file1

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

Para importar todas as variáveis ​​do arquivo1 para o espaço de nome do arquivo2 (não recomendado):

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

Dos documentos :

Embora seja válido usar from module import *no nível do módulo, geralmente é uma má idéia. Por um lado, isso perde uma propriedade importante que o Python possui - você pode saber onde cada nome de nível superior é definido por uma simples função de "pesquisa" no seu editor favorito. Você também se abre para problemas no futuro, se algum módulo aumentar funções ou classes adicionais.

Ashwini Chaudhary
fonte
1
e se eu tiver 1000 variáveis ​​para passar?
Ofek
1
@Ofek Basta usar import file1 então.
Ashwini Chaudhary
1
Ele não importa as variáveis: \
Ofek
7
importa as variáveis, embora você precise pré-anexar file1.varXpara cada arquivo.
Zmo
43

Melhor importar x1 e x2 explicitamente:

from file1 import x1, x2

Isso permite que você evite conflitos desnecessários no namespace com variáveis ​​e funções file1durante o trabalho file2.

Mas se você realmente quiser, poderá importar todas as variáveis:

from file1 import * 
Chris Redford
fonte
11

Na verdade, isso não é realmente o mesmo para importar uma variável com:

from file1 import x1
print(x1)

e

import file1
print(file1.x1)

Embora no momento da importação x1 e file1.x1 tenham o mesmo valor, elas não são as mesmas variáveis. Por exemplo, chame uma função no arquivo1 que modifique x1 e tente imprimir a variável no arquivo principal: você não verá o valor modificado.

Marc Rechté
fonte
5

Marc resposta está correta. Na verdade, você pode imprimir o endereço de memória para as variáveis print(hex(id(libvar))e pode ver que os endereços são 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
fonte
3

script1.py

title="Hello world"

script2.py é onde usamos a variável script1

Método 1:

import script1
print(script1.title)

Método 2:

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

Como Pythonvocê pode acessar o conteúdo de outros arquivos, como se eles
fossem algum tipo de biblioteca, em comparação com outros idiomas, como java ou qualquer outro idioma de base, isso é muito legal;

Isso faz com que acessar o conteúdo do arquivo ou importá-lo para processá-lo ou fazer qualquer coisa com ele; E essa é a principal razão pela qual o Pythonidioma é altamente preferido para ciência de dados e aprendizado de máquina etc.;

E esta é a imagem de project structure este

Onde estou acessando variáveis ​​de .env fileonde API linksresidem as chaves e Secret.

Estrutura geral:

from <File-Name> import *
Imran
fonte
0

first.py:

a=5

second.py:

import first
print(first.a)

O resultado será 5.

陳仲 肯
fonte