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."

вместо.

Другие вопросы по тегам