Відповіді:
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
Щоб імпортувати всі змінні з файлу1 в область імен 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 мають однакове значення, вони не є однаковими змінними. Наприклад, викличте функцію у file1, яка модифікує 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 *