Ответы:
from file1 import *
импортирует все объекты и методы в файл1
ImportError: No module named file1
Импортировать file1
внутрь file2
:
Чтобы импортировать все переменные из file1 без переполнения пространства имен file2, используйте:
import file1
#now use file1.x1, file2.x2, ... to access those variables
Чтобы импортировать все переменные из file1 в пространство имен file2 (не рекомендуется):
from file1 import *
#now use x1, x2..
Из документов :
Хотя использование
from module import *
на уровне модуля допустимо, это обычно плохая идея. Во-первых, это теряет важное свойство Python, которым обладает иначе - вы можете узнать, где определяется каждое имя верхнего уровня, с помощью простой функции «поиска» в вашем любимом редакторе. Вы также можете столкнуться с проблемами в будущем, если в каком-то модуле появятся дополнительные функции или классы.
import file1
.
file1.varX
для каждого файла.
Лучше всего явно импортировать x1 и x2 :
from file1 import x1, x2
Это позволяет избежать ненужных конфликтов имен с переменными и функциями от file1
работая в file2
.
Но при желании можно импортировать все переменные:
from file1 import *
На самом деле это не то же самое, что импортировать переменную с помощью:
from file1 import x1
print(x1)
и
import file1
print(file1.x1)
Хотя во время импорта x1 и file1.x1 имеют одинаковое значение, они не являются одинаковыми переменными. Например, вызовите функцию в файле1, которая изменяет x1, а затем попробуйте распечатать переменную из основного файла: вы не увидите измененное значение.
Ответ Марка правильный. Фактически, вы можете распечатать адрес памяти для переменных, print(hex(id(libvar))
и вы увидите, что адреса разные.
# 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)))
В Python
вы можете получить доступ к содержимому других файлов , таких как , как будто они
являются своего рода библиотеки, по сравнению с другими языками , как Java или любые OOP базовых языков, это действительно здорово;
Это позволяет получить доступ к содержимому файла или импортировать его, чтобы обработать или что-либо с ним сделать; И это основная причина, по которой язык Python
является предпочтительным для науки о данных, машинного обучения и т. Д .;
А это картина project structure
Где я получаю доступ к переменным, .env file
откудаAPI links
находятся и секретные ключи.
Общая структура:
from <File-Name> import *