Найти - Пользователи
Полная версия: import FUNCTIONS , from FUNCTIONS import * и from FUNCTIONS import fun2
Начало » Python для новичков » import FUNCTIONS , from FUNCTIONS import * и from FUNCTIONS import fun2
1
andrei186
Имеется файл FUNCTIONS.py в котором определены несколько функций.
Правильно ли понимать, что
import FUNCTIONS
и
from FUNCTIONS import *
дают одинаковый результат, и импортируют всё содержание модуля FUNCTIONS,
а
from FUNCTIONS import fun2 
импортирует только fun2() и ничего более?
ayb
andrei186
дают одинаковый результат
Нет

andrei186
импортирует только fun2() и ничего более?
Да

Читай https://docs.python.org/2/tutorial/modules.html#modules
andrei186
ayb
andrei186
импортирует только fun2() и ничего более?
Да
вот и я так думал. Однако если в модуле кроме определения функции def fun2() имеется ее вызов fun2(), то эта функция выполяется, несмотря на
from FUNCTIONS import fun2
Если закомментировать вызов функции в модуле, то в основном коде она не выполняется.
Других ссылок на этот модуль нет.
У меня Питон 2.7 на Вин ХР
Как это объяснить?
FishHook
andrei186
Как это объяснить?

Тело модуля при импорте выполняется. Это естественно, потому что питон - динамический язык, функция может вообще отсутствовать в коде в классическом виде. Она может генерироваться в рантайме (например, с помощью eval), разумеется, генерирующий код должен быть выполнен.
kampella
andrei186
Если закомментировать вызов функции в модуле, то в основном коде она не выполняется.
Нужно не комметировать, а использовать конструкцию if __name__ == ‘__main__’:
andrei186
Т.е. если я импортирую fun2 посредством
FishHook
from FUNCTIONS import fun2
то импортируется определение функции fun2 и все остальное, что не является определениями функций?
ayb
Импортируется то, что ты указал, но в модуле, из которого ты импортируешь выполниться весь код.
andrei186
ayb
Импортируется то, что ты указал, но в модуле, из которого ты импортируешь выполниться весь код.
В модуле, из которого я импортирую, кроме определения функции, есть импорт других модулей, необходимых для этой функции, например import Tkinter
Но Tkinter у меня импортируется в основном модуле - значит он импортируется дважды?
Приведет ли это к каким-то коллизиям и излишнему потреблению памяти?
4kpt_IV
Модуль импортируется единожды.
andrei186
Понято. Всем спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB