Python, если var не существует, то
Я разрабатываю некоторые проверки IMAP. Теперь счетчик входящих сообщений печатает сообщение в следующем формате: ['number'].
Теперь, когда это число разделено на число в var num. Смотрите следующий код:
for num in data[0].split():
print num
Теперь дело в том, что если нет новых писем, num не существует, поэтому я хочу оператор if, подобный этому:
if <num doesn't exist>: print "No new emails found."
Но как это должно выглядеть, если заявление выглядит?
4 ответа
Решение
Самый питонический способ достичь того, чего вы, кажется, хотите, это:
nums = data[0].split()
for num in nums:
print num
if not nums:
print "No new emails found"
так как код точно отражает намерение.
Проверьте этот сайт, у них есть полезный фрагмент, чтобы проверить, существует ли переменная или нет:
# Ensure variable is defined
try:
num
except NameError:
num = None
# Test whether variable is defined to be None
if num is None:
some_fallback_operation()
else:
some_operation(num)
Проверьте размер разделенных данных и используйте их в качестве условия:
for num in data[0].split():
print num
if len(data[0].split()) == 0:
print "No new emails found."
Более элегантный способ:
for num in data[0].split():
print num
if not data[0].split():
print "No new emails found."
Я бы сделал
num = None
for num in data[0].split():
print num
if num is None:
print "No new emails found."
Если None
является действительной порцией данных, используйте
num = sentinel = object()
for num in data[0].split():
print num
if num is sentinel:
print "No new emails found."
вместо.