Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 16, 2014 14:12:55

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

При импорте вызывается исполнение всего функций модуля

Проблема в том, что у меня после импортирования модуля он весь исполняется.
app.py:

import hello
print "Main from main App"

hello.py:
def sayhello():
	print "hello from import"
	
sayhello()

Вывод:
D:\1>app.py
hello from import
Main App

Просто я рассчитывал, что после импорта модуля у меня будет просто возможность использовать переменные оттуда, а импорт приводит к выполению всего модуля. Есть варианты или переменные нужно вынести в отдельный модуль?

Офлайн

#2 Апрель 16, 2014 14:53:07

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

При импорте вызывается исполнение всего функций модуля

#hello.py
def sayhello():
	print "hello from import"
if __name__ == '__main__':
	sayhello()

Офлайн

#3 Апрель 16, 2014 15:02:36

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

При импорте вызывается исполнение всего функций модуля

Suliman
вы не правильно понимаете что такое импорт в Python, он работает ровно так как вы сами и сказали - он не просто объеденяет пространство имен модулей, но и выполняет весь код который в нем указан. Решение вам правильно предложил ilnur, sayhello() выполнится в hello.py только если вызвать непосредственно его.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version