На самом деле, если вы пытаетесь определить, была ли переменная ранее установлена с помощью вызова get_var, то я бы сказал, что обе формы неправильны . Python рассматривает ряд совершенно обычных значений как вычисление логического «ложь»: 0, None, [], (,), set () и {}. Допустим, var будет целым числом, а get_var () возвращает 0. Теперь, независимо от того, какую форму вы используете, get_var () будет вызываться снова и снова, даже если мы уже знаем, что var равен 0!
Существует несколько методов определения, была ли переменная определена или нет:
посмотрите в dict, возвращаемом globals () или localals ()
обернуть оператор var = var
в блок try / исключением, перехватывая при ошибке NameError
использовать значение часового типа, например None, и инициализировать var этим значением; тогда вы можете проверить на if var is None: var = get_var()
(используя 'is', а не '=='). Если вам не повезло, и None - это потенциальное значение, которое будет возвращено из get_var (), тогда вам нужно определить свое собственное специальное еще не определенное значение, используя что-то вроде NOT_DEFINED = object()
, инициализировать с ним var, а затем Вы можете проверить на if var is NOT_DEFINED
.