Уведомления

Группа в Telegram: @pythonsu

#1 Июль 13, 2011 15:32:39

kvadrat
От:
Зарегистрирован: 2011-07-13
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

def def

здравствуйте я новичок в программировании прошу совета по питону
конкретно вопрос косается определения функции
здесь максимально упрощенный пример проблемы, отражающий суть

итак.задается функция которая будет использоваться очень часто. в этом случае такая функция Slojenie
эта функция содержится в тексте определения другой функции - Eshe_odna
получается так, что на момент определения функции Eshe_odna не одна переменная в ней не определена

def Slojenie ():
c = a + b
return c

def Eshe_odna ():
#эта функция не маленькая на самом деле
a = a2
b = b2
Slojenie ()

#основной текст программы. здесь много всякого кода, где функция Eshe_odna () используется много много раз
a2 = 2
b2 = 2

d = Eshe_odna ()
print d
ну вот и такое получаю
Traceback (most recent call last):
File "<scriptmanager>", line 15, in <module>
File "<scriptmanager>", line 9, in Eshe_odna
File "<scriptmanager>", line 2, in Slojenie
NameError: global name 'a' is not defined
как с этим быть?

единственный рабочий выход из ситуации который я вижу - не определять функцию Eshe_odna (),
вместо этого каждый раз повторять ее текст. но код получается очень большой и некрасивый. ну и вообще это не дело



Офлайн

#2 Июль 13, 2011 15:41:40

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

def def

передавай a и b в Slojenie как параметры.



Офлайн

#3 Июль 13, 2011 16:01:15

kvadrat
От:
Зарегистрирован: 2011-07-13
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

def def

спасибо. работает



Офлайн

#4 Июль 14, 2011 08:16:34

kublo
От:
Зарегистрирован: 2011-04-08
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

def def

Можно объявить переменные a и b глобальными

def Eshe_odna ():
global a, b
a = a2
b = b2
Slojenie ()
Но это плохая практика и по возможности её лучше избегать.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version