Jak mogę importować zmienne z jednego pliku do drugiego?
przykład: file1
ma zmienne x1
i x2
jak je przekazać file2
?
Jak mogę zaimportować wszystkie zmienne z jednej do drugiej?
Odpowiedzi:
from file1 import *
zaimportuje wszystkie obiekty i metody z pliku file1
ImportError: No module named file1
Import file1
wewnątrz file2
:
Aby zaimportować wszystkie zmienne z pliku1 bez zalewania przestrzeni nazw pliku2, użyj:
import file1
#now use file1.x1, file2.x2, ... to access those variables
Aby zaimportować wszystkie zmienne z pliku1 do przestrzeni nazw pliku2 (niezalecane):
from file1 import *
#now use x1, x2..
Z dokumentów :
Chociaż można go używać
from module import *
na poziomie modułu, zwykle jest to zły pomysł. Po pierwsze, powoduje to utratę ważnej właściwości, którą Python ma w innym przypadku - możesz wiedzieć, gdzie każda nazwa najwyższego poziomu jest zdefiniowana za pomocą prostej funkcji „wyszukiwania” w Twoim ulubionym edytorze. Narażasz się także na kłopoty w przyszłości, jeśli w jakimś module pojawią się dodatkowe funkcje lub klasy.
import file1
.
file1.varX
każdym plikiem.
Najlepiej jawnie zaimportować x1 i x2 :
from file1 import x1, x2
Pozwala to uniknąć niepotrzebnych konfliktów przestrzeni nazw ze zmiennymi i funkcjami file1
podczas pracy w programie file2
.
Ale jeśli naprawdę chcesz, możesz zaimportować wszystkie zmienne:
from file1 import *
W rzeczywistości importowanie zmiennej z:
from file1 import x1
print(x1)
i
import file1
print(file1.x1)
Chociaż w czasie importu x1 i plik1.x1 mają tę samą wartość, nie są tymi samymi zmiennymi. Na przykład, wywołaj funkcję w pliku1, która modyfikuje x1, a następnie spróbuj wydrukować zmienną z pliku głównego: nie zobaczysz zmodyfikowanej wartości.
Odpowiedź Marca jest poprawna. Właściwie możesz wydrukować adres pamięci dla zmiennych print(hex(id(libvar))
i możesz zobaczyć, że adresy są różne.
# 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)))
W Python
można uzyskać dostęp do zawartości innych plików, takich jak jak gdyby
są jakieś biblioteki, w porównaniu do innych języków takich jak Java lub jakichkolwiek języków bazowych oop, to jest naprawdę fajne;
To sprawia, że dostęp do zawartości pliku lub importowanie go w celu przetworzenia lub zrobienia czegokolwiek z nim; I to jest główny powód, dla którego Python
jest bardzo preferowany język w nauce o danych i uczeniu maszynowym itp .;
A to jest zdjęcie project structure
Gdzie uzyskuję dostęp do zmiennych z .env file
miejsca, w którym API links
znajdują się klucze tajne i.
Struktura ogólna:
from <File-Name> import *