Игнорирование не существующей переменной python

def func():
   a = 1
   b = a+c
   print(b)
func()

Как сделать так, чтобы если c не существует, то просто не прибавлять её?


Ответы (3 шт):

Автор решения: Sergey K.

Можно сделать двумя путями:

  1. объявить заранее c = None и добавить проверку if c is not None
  2. По вашему контексту можно задать заранее для переменной значение c = 0 и если нет другого переопределения переменной, то и сложение ничего не изменит.

Есть и более костыльный выход через рефлексию. Вот был аналогичный вопрос.

→ Ссылка
Автор решения: CrazyElf

Вообще вы решаете не ту проблему. Функция в принципе не должна оперировать переменными, которые в неё не были переданы явным образом как параметры. Ну, если это не метод класса. В обоих случаях проблема решается либо параметром функции со значением по умолчанию 0, либо если это класс, то сразу инициализировать переменную класса нулём прямо при создании класса.

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

→ Ссылка
Автор решения: splash58

если c не существует, то просто не прибавлять её?

def func():
    a = 1
    try:
        b = a+c
    except NameError:
        b = a
    print(b)
func()
→ Ссылка