Вопрос

Возможный дубликат:
Простой способ проверить, что переменная определена в Python?
Как проверить, существует ли переменная в Python?

Как узнать, установлена ​​ли переменная в определенном месте кода во время выполнения?Это не всегда очевидно, поскольку (1) переменная может быть условно установлена ​​и (2) переменная может быть условно удалена.Я ищу что-то вроде defined() в Perl или isset() на PHP или defined? в Руби.

if condition:
    a = 42

# is "a" defined here?

if other_condition:
    del a

# is "a" defined here?
Это было полезно?

Решение

try:
    thevariable
except NameError:
    print("well, it WASN'T defined after all!")
else:
    print("sure, it was defined.")

Другие советы

'a' in vars() or 'a' in globals()

если вы хотите быть педантичным, вы также можете проверить встроенные функции
'a' in vars(__builtins__)

Я думаю, что лучше избегать такой ситуации.Чище и понятнее написать:

a = None
if condition:
    a = 42
try:
    a # does a exist in the current namespace
except NameError:
    a = 10 # nope

Одна из возможных ситуаций, когда это может понадобиться:

Если вы используете finally блокировать закрытие соединений, но в try блок, программа завершается с sys.exit() прежде чем соединение будет определено.В этом случае finally будет вызван блок, и оператор закрытия соединения завершится неудачей, поскольку соединение не было создано.

В данном конкретном случае лучше сделать a = None вместо del a.Это уменьшит счетчик ссылок на объект. a был (если таковой имеется) назначен и не выйдет из строя, когда a не определен.Обратите внимание, что del Оператор не вызывает деструктор объекта напрямую, а отвязывает его от переменной.Деструктор объекта вызывается, когда счетчик ссылок становится равным нулю.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top