Найти - Пользователи
Полная версия: Использование if в модуле
Начало » Python для новичков » Использование if в модуле
1 2 3
py.user.next
totiks
а правильно его просто перезагрузить,используя reload

Во втором - reload(), в третьем - imp.reload()

Budulianin
Интепретатор куда-то посмотрит(а вот куда интерересно?) и увидет импортированный ранее модуль.

import module
import sys
del sys.modules['module']
import module
totiks
Budulianin благодаря вашим усилиям догнал,
код
import m1
import m2
print m1.a
print m2.b
raw_input()
a=0
b=0
raw_input()
print a
print b
raw_input()
reload(m1)
reload(m2)
print m1.a
print m2.b
raw_input()
, и не устану вас благодарить!Спасибо. ))
Budulianin
totiks

Зачем перегружать модули, если они не изменились?

a=0
b=0

Никак не влияют на m1.a, m1.b

В модуле своё пространство имён, ты получаешь доступ к нему, через точечную нотацию.
m1.a - получаем переменную из пространства имён модуля m
просто a - переменная в текущем пространстве.

from m1 import a - импортируем переменную из модуля, в текущее пространство имён.
Поэтому, если a уже была определена, она перезапишет a из модуля m1.

Прочитай про функции locals и globals. И посмотри на их вывод, в зависимости от твоих импортов.
totiks
Budulianin
пишу игру в кости,для самообучения,вероятно чтоб комбинация выпавших костей изменялась нужно перезагружать модули отвечающие за генерацию и выдачу выиграных очков исходя из комбинации,хотя возможно в ваших словах есть что-то,сегодня попробую как повлияет точечное обращение к переменой в модуле повторно,будет ли переменая менятся или нет…все очень интересно,и не высыпаюсь ))).
FishHook
totiks
вероятно чтоб комбинация выпавших костей изменялась нужно перезагружать модули
А вы хорошо понимаете, что такое модули и зачем они вообще нужны?
Budulianin
totiks
хотя возможно в ваших словах есть что-то
:)
totiks

FishHook смутно…но пытаюсь понять,из теории мной понялось что они используются в качестве подпрограмм,они нужны там где участки кода часто повторяются…
FishHook
totiks
они нужны там где участки кода часто повторяются…
Они нужны для того, чтобы изолировать логику связанную со специфической задачей.
Если вы хотите работать со временем, вы импортируете модуль datetime, содержащий множество различных компонентов, и используете эти компоненты не задумываясь о том, как именно происходит то или иное вычисление. Вы отдаете в модуль данные и получаете результат. Вы не изменяете состояние модуля, не лезете в его код, вы его используете как автомат по продаже пирожков. Если вам нужно вдруг изменить поведение, например работать в другом часовом поясе, бог вас упаси менять какие-то константы внутри модуля datetime или перезагружать его. Не нужно перезагружать автомат с пирожками для получения другого пирожка.
totiks

FishHook
Гм-м мои извинения,я немного смущен результатами, вот что у меня получилось
я создаю модуль в нем рандомно присваиваю значение для x , от 0 до 7
называю этот модуль именем mod , и пишу в программе такой код:
import mod
rez1=mod.x
rez2=mod.x
rez3=mod.x
print rez1
print rez2
print rez3
и выводит одно и тоже значение для rez1,rez2,rez3
тогда как меняя код на :
import mod
rez1=mod.x
reload(mod)
rez2=mod.x
reload(mod)
rez3=mod.x
print rez1
print rez2
print rez3
,на выходе я получаю совершено разные значения для rez1,rez2, и rez3 ,то есть нет ничего предосудительного если я напишу сам модуль и переодически дам ему команду на перезагрузку,…я просто настолько зелен в этом деле что не знаю как правильно и потому нащупываю свои пути…
Budulianin
totiks

Для этого необязательно создавать модуль.
Импортируй модуль random в своём главной модуле и каждой переменной присваивай результат функции random.randint(0, 7).

За тебя уже написали модуль, в котором хранятся инструменты связанные с random.
Тебе нужно просто их использовать.
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