Я наткнулся на интересное выражение в Ruby:
a ||= "new"
Это означает, что если a не определено, "новое" значение будет присвоено a; в противном случае a будет таким же, как есть. Это полезно при выполнении некоторых запросов к БД. Если значение установлено, я не хочу запускать еще один запрос к БД.
Поэтому я попробовал подобный подход в Python :
a = a if a is not None else "new"
. Это не удалось. Я думаю, что это потому, что вы не можете сделать «a = a» в Python, если a не определено.
Итак, решения, которые я могу предложить, это проверка локальных переменных ()и глобальных переменных ()или использование выражения try...except:
myVar = myVar if 'myVar' in locals() and 'myVar' in globals() else "new"
или
try:
myVar
except NameError:
myVar = None
myVar = myVar if myVar else "new"
Как мы видим, решения не столь элегантны. Поэтому я хотел бы спросить, есть ли лучший способ сделать это?