Форум сайта python.su
Новичок самоучка по Питону.
Есть два модуля, один из них хочет каждые икс секунд получать переменную из второго модуля, которая, понятное дело, должна была бы обновляться. Обязательно ли для этого во втором модуле должна быть функция, в которой и должна была бы быть данная переменная?
На примере. Если я хочу из данного модуля:
current_time_in_module = time.time()
def time_fx():
current_time_in_fx = time.time()
return current_time_in_fx
получать обновляющееся время путем итерации его в другом модуле:
for x in range(0, 100):
print(another_module.current_time_in_module)
print(another_module.time_fx())
time.sleep(1)
то обновляется только та переменная, которая “лежит” в функции и вызывается ею, переменная вне функции все время та же самая.
Поэтому вопрос, можно ли “запустить” модуль с обновляющимися переменными в нем, если они не в функции?
Отредактировано Renaldas (Фев. 10, 2022 03:20:45)
Офлайн
RenaldasДа никаких проблем.
получать переменную из второго модуля
RenaldasА тут у вас непонимание. В питоне все выполняется последовательно. Импорт грубо говоря переход на выполнение команд из импортируемого файла. Применение функций ничего не изменит. Считайте импорт это как вставить содержимое в данное место.
должна была бы обновляться
Офлайн
doza_and
Офлайн
когда вы пишете
import some_module
some_module.func() # вызов функции из модуля print(some_module.var)# вывод в консоль значение переменной из модуля
print('эта строка выведется,если модуль импортируют или запустят этот файл как самостоятельный') # if __name__ == '__main__': print('\nэта строка НЕ ВЫВЕДЕТСЯ, если этот модуль ИМПОРТИРУЮТ') print('но выведется если этот файл запустят как самостоятельный')
Офлайн
RenaldasНеплохо почитать теорию :)
Эмпирическим путем мне получилось установить
# a.py import b import c def some1(): c.x() .... #b.py import c def some2(): c.x() # c.py def x(): ...
Офлайн
xam1816А если я хочу чтобы цикл из другого модуля постоянно запускал первый модуль заново? Именно модуль, а не отдельную функцию из того модуля?
когда вы пишете
Офлайн
doza_andВот, эта фраза мне понравилась, стало кое-что на свое место! Это как бы отвечает на мой вопрос, что я не могу выполнить код (кроме одного раза после импорта или принудительно реимпортируя), написанный прям в модуле, не в функции внутри модуля?
сами эти модули это не выполняемый код, а контейнеры для функций
Офлайн
Renaldas
Я не очень понимаю сути разбивания на модули
Renaldasэто пишется так
Но для меня такая разбивка делает неразумно длинными имена переменных (добавляется каждый раз название модуля.название функции)
import module as m data = input() res_1 = m.func_1(data) res_2 = m.func_2(res_1) out = m.func_3(res_2) print(out)
Офлайн
xam1816Значит, я изначально, когда еще не знал, что такое функция, начал ее использовать неправильно. У меня в одной функции и реквест, и подсчет полученных данных, и вывод принтами каких-то нужных результатов, и пересортировка в словари и еще куча всего. Получается, я использую функцию там, где должен был бы использовать модуль из функций, так?
Офлайн
Выложите сюда свой код, который изначально у вас был на одном файле
Офлайн