Форум сайта python.su
Основная программа:
import sc
while True:
sc.tst()
tvar = 10
def tst():
print(tvar)
#tvar += 1
Traceback (most recent call last):Т.е. к локальным переменным модуля нельзя получить доступ из функций самого этого модуля? Global не помогает, да и не нужно. Помог только вариант с присвоением пременной и передачей значения в функцию из основной программы.
File “D:\oz86files\dev\learn py\mn.py”, line 5, in <module>
sc.tst()
File “D:\oz86files\dev\learn py\sc.py”, line 4, in tst
print(tvar)
UnboundLocalError: local variable ‘tvar’ referenced before assignment
Отредактировано (Апрель 20, 2011 13:14:01)
Офлайн
Перед тем, как вызывать функцию, питон пробегается по переменным и проверяет, есть ли присваивания переменной.
Если присвоения нет или же использован модификатор global, то переменная трактуется, как глобальная.
def tst():
print(tvar)
def tst():
print(tvar)
tvar += 1
tvar = 1
def tst():
global tvar
print(tvar)
tvar += 1
Отредактировано (Апрель 20, 2011 13:30:53)
Офлайн
Допустим в главном файле у меня есть переменная ТВАР. В модуле тоже ТВАР. Они разные. Если я буду использовать ГЛОБАЛ ТВАР в функции модуля - то какую переменную “получу”?
Вообще подразумевает расширение программы (здесь пример - проблему “высосал”), и будет много модулей у которых возможно будут одинаковые внутренние переменные, которые должны менятся непостредственно функциями этих модулей.
За помощь большое спасибо.
ЗЫ. Насколько понимаю, используя изменяемые объекты (вроде листов, классов и т.п.), проблема отпадает, т.к. в функцию передаётся “указатель”, и соответсвенно по указателю можно изменять значение. Это так?
Отредактировано (Апрель 20, 2011 13:43:32)
Офлайн
rip86ozПеременную модуля.
Допустим в главном файле у меня есть переменная ТВАР. В модуле тоже ТВАР. Они разные. Если я буду использовать ГЛОБАЛ ТВАР в функции модуля - то какую переменную “получу”?
import module
module.tvar = "new value"
Офлайн