Antworten:
from file1 import *
importiert alle Objekte und Methoden in Datei1
ImportError: No module named file1
Import nach file1
innen file2
:
Verwenden Sie Folgendes, um alle Variablen aus Datei1 zu importieren, ohne den Namespace von Datei2 zu überfluten.
import file1
#now use file1.x1, file2.x2, ... to access those variables
So importieren Sie alle Variablen von Datei1 in den Namespace von Datei2 (nicht empfohlen):
from file1 import *
#now use x1, x2..
Aus den Dokumenten :
Während es
from module import *
auf Modulebene gültig ist, ist es normalerweise eine schlechte Idee. Zum einen verliert dies eine wichtige Eigenschaft, die Python sonst hat - Sie können durch eine einfache Suchfunktion in Ihrem bevorzugten Editor wissen, wo jeder Toplevel-Name definiert ist. Sie öffnen sich auch in Zukunft für Probleme, wenn ein Modul zusätzliche Funktionen oder Klassen erweitert.
import file1
.
file1.varX
jeder Datei ein Präfix voranstellen müssen.
Am besten x1 und x2 explizit importieren :
from file1 import x1, x2
Auf diese Weise können Sie unnötige Namespace-Konflikte mit Variablen und Funktionen file1
während der Arbeit vermeiden file2
.
Aber wenn Sie wirklich wollen, können Sie alle Variablen importieren :
from file1 import *
Tatsächlich ist dies nicht dasselbe, um eine Variable zu importieren mit:
from file1 import x1
print(x1)
und
import file1
print(file1.x1)
Obwohl x1 und file1.x1 zum Zeitpunkt des Imports denselben Wert haben, sind sie nicht dieselben Variablen. Rufen Sie beispielsweise eine Funktion in Datei1 auf, die x1 ändert, und versuchen Sie dann, die Variable aus der Hauptdatei zu drucken: Der geänderte Wert wird nicht angezeigt.
Marc Antwort ist richtig. Tatsächlich können Sie die Speicheradresse für die Variablen drucken print(hex(id(libvar))
und sehen, dass die Adressen unterschiedlich sind.
# 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)))
In können Python
Sie auf den Inhalt anderer Dateien zugreifen, als wären sie
eine Art Bibliothek, verglichen mit anderen Sprachen wie Java oder anderen oop-Basissprachen. Das ist wirklich cool.
Dadurch können Sie auf den Inhalt der Datei zugreifen oder sie importieren, um sie zu verarbeiten oder etwas damit zu tun. Und das ist der Hauptgrund, warum Python
Sprache für Datenwissenschaft und maschinelles Lernen usw. sehr bevorzugt wird.
Und das ist das Bild von project structure
Wo ich auf Variablen zugreife, von .env file
wo aus sich die API links
Schlüssel und Secret befinden.
Allgemeine Struktur:
from <File-Name> import *