【发布时间】:2015-11-13 22:13:40
【问题描述】:
让我们做一个简单的例子。
my_list = [
{"name": "toto", "value": 3},
{"name": "foo", "value": 42},
{"name": "bar", "value": 56}
]
def foo(name):
try:
value = next(e["value"] for e in my_list if e["name"] == name)
except StopIteration:
print "Uuuh not found."
else:
if value % 2:
print "Odd !"
else:
print "Even !"
如您所见,上面的代码有效:
>>> foo("toto")
Odd !
>>> foo("foo")
Even !
>>> foo("kappa")
Uuuh not found.
我只是想知道为什么我们不能像这样使用elif 语句和try 语句是否有特殊原因:
try:
value = next(e["value"] for e in my_list if e["name"] == name)
except StopIteration:
print "Uuuh not found."
elif value % 2:
print "Odd !"
else:
print "Even !"
当然,这是行不通的,因为正如try statement documentation 中定义的那样,elif 语句没有定义。但为什么 ?是否有特定原因(如绑定/未绑定变量)?有这方面的资料吗?
(旁注:没有elif-statement标签?)
【问题讨论】:
-
如果需要,你没有前面的
-
等等...不是吗?因为
if语句将是一个新块? -
@FunkySayu 为什么不在 try 块中添加 if 语句
-
您应该使用
if并将 if/else 移动到 try 中。如果有错误if/else不会被执行,就是成功了就会
标签: python if-statement try-catch