Как обойти ошибку получив None вместо результата "NameError: name '*' is not defined?"

Рейтинг: 0Ответов: 1Опубликовано: 02.07.2023

На Python 3.10 пытаюсь передать значения, если они есть, но получаю ошибку is not defined для не вызванных переменных:

def my_func_1():
   if a == True:
      b = 2
   else:
      c = 3

   my_func_2(param_a=a, param_b=b, param_c=c)


my_func_1()

на выходе ожидаю в функции my_func_2() похожие вариации вхождения:

  • param_a=True, param_b=2, param_c=None
  • param_a=False, param_b=None, param_c=3

Каким образом можно сделать заглушку, что бы если переменная не назначалась подставлять None?

Ответы

▲ 1Принят

Можно сделать так:

def my_func_1():
   b = None
   c = None

   if a == True:
      b = 2
   else:
      c = 3

   my_func_2(param_a=a, param_b=b, param_c=c)


my_func_1()

Или вообще так:

b = None
c = None

def my_func_1():
   global b
   global c
   if a == True:
      b = 2
   else:
      c = 3

   my_func_2(param_a=a, param_b=b, param_c=c)


my_func_1()

Переменные нужно объявить до их использования во внешней области видимости.