Найти - Пользователи
Полная версия: def def
Начало » Python для новичков » def def
1
kvadrat
здравствуйте я новичок в программировании прошу совета по питону
конкретно вопрос косается определения функции
здесь максимально упрощенный пример проблемы, отражающий суть

итак.задается функция которая будет использоваться очень часто. в этом случае такая функция 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 (),
вместо этого каждый раз повторять ее текст. но код получается очень большой и некрасивый. ну и вообще это не дело
Dimka665
передавай a и b в Slojenie как параметры.
kvadrat
спасибо. работает
kublo
Можно объявить переменные a и b глобальными
def Eshe_odna ():
global a, b
a = a2
b = b2
Slojenie ()
Но это плохая практика и по возможности её лучше избегать.
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