except语句中的',‘和'as’有什么区别,例如:
try:
pass
except Exception, exception:
pass和:
try:
pass
except Exception as exception:
pass第二个语法在2.6中合法吗?它可以在Windows2.6下运行,但是cygwin中的2.5解释器抱怨说它是无效的。
如果它们在2.6中都有效,我应该使用哪一个?
发布于 2010-03-29 12:19:44
最终文档是PEP-3110: Catching Exceptions
摘要:
as为变量分配异常。as语法,因为它的歧义更少,并且与Python3.x向前兼容。在Python2.5和更早版本中,as。<代码>H210<代码>F211发布于 2010-03-29 13:07:56
是的这是合法的。我正在运行Python 2.6
try:
[] + 3
except Exception as x:
print "woo hoo"
>>>
woo hoo更新:使用as语法还有另一个原因。正如其他人所指出的,使用,使事情变得更加模棱两可;下面是造成这种不同的原因。在Python2.6中,已经有了允许catch multiple exceptions in one except block的multicatch。在这种情况下,更具表现力和pythonic风格的说法是
except (exception1, exception2) as e而不是说
except (exception1, exception2), e它仍然可以工作
发布于 2010-03-29 12:18:30
"as“语法是未来的首选语法,然而,如果您的代码需要使用旧的Python版本(2.6是第一个支持新版本的),那么您将需要使用逗号语法。
https://stackoverflow.com/questions/2535760
复制相似问题