【发布时间】:2010-01-22 02:21:36
【问题描述】:
选项 1:
def f1(c):
d = {
"USA": "N.Y.",
"China": "Shanghai"
}
if c in d:
return d[c]
return "N/A"
选项 2:
def f2(c):
d = {
"USA": "N.Y.",
"China": "Shanghai"
}
try:
return d[c]
except:
return "N/A"
这样我就可以打电话了:
for c in ("China", "Japan"):
for f in (f1, f2):
print "%s => %s" % (c, f(c))
选项是确定密钥是否事先在目录中(f1),或者只是回退到异常(f2)。哪个是首选?为什么?
【问题讨论】:
-
除了:是恶业。始终具体说明您有兴趣捕获的内容,在这种情况下为 KeyError
-
你选了一个糟糕的例子。显而易见的答案不涉及任何风格。
标签: python exception coding-style