0

我正在开发一些 IMAP 检查器。现在收件箱计数以以下布局打印一条消息:[' number ']。

现在该数字被拆分为 var num 中的数字。请参阅以下代码:

for num in data[0].split():
    print num

现在的问题是,如果没有任何新电子邮件 num 不存在,那么我想要这样的 if 语句:

if <num doesn't exist>: print "No new emails found."

但是那个 if 语句应该是什么样子的呢?

4

4 回答 4

6

实现您似乎想要的最pythonic方法是:

nums = data[0].split()
for num in nums:
   print num
if not nums:
   print "No new emails found"

因为代码准确地反映了意图。

于 2012-12-06T13:20:10.077 回答
2

检查这个站点,他们有一个有用的片段来检查变量是否存在或者它是否为无:

# 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)
于 2012-12-06T13:10:19.573 回答
1

检查拆分数据的大小并将其用作您的条件:

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."
于 2012-12-06T13:14:32.587 回答
1

我会做

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

反而。

于 2012-12-06T13:24:13.507 回答