首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python try...except逗号与except中的'as‘

Python try...except逗号与except中的'as‘
EN

Stack Overflow用户
提问于 2010-03-29 12:16:57
回答 5查看 97.2K关注 0票数 260

except语句中的',‘和'as’有什么区别,例如:

代码语言:javascript
复制
try:
    pass
except Exception, exception:
    pass

和:

代码语言:javascript
复制
try:
    pass
except Exception as exception:
    pass

第二个语法在2.6中合法吗?它可以在Windows2.6下运行,但是cygwin中的2.5解释器抱怨说它是无效的。

如果它们在2.6中都有效,我应该使用哪一个?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-29 12:19:44

最终文档是PEP-3110: Catching Exceptions

摘要:

  • 在Python 3.x中,需要使用as为变量分配异常。
  • 在Python 2.6+中,使用as语法,因为它的歧义更少,并且与Python3.x向前兼容。在Python2.5和更早版本中,
  • 使用逗号版本,因为不支持as。<代码>H210<代码>F211
票数 299
EN

Stack Overflow用户

发布于 2010-03-29 13:07:56

是的这是合法的。我正在运行Python 2.6

代码语言:javascript
复制
try:
    [] + 3
except Exception as x:
    print "woo hoo"

>>> 
woo hoo

更新:使用as语法还有另一个原因。正如其他人所指出的,使用,使事情变得更加模棱两可;下面是造成这种不同的原因。在Python2.6中,已经有了允许catch multiple exceptions in one except blockmulticatch。在这种情况下,更具表现力和pythonic风格的说法是

代码语言:javascript
复制
except (exception1, exception2) as e

而不是说

代码语言:javascript
复制
except (exception1, exception2), e

它仍然可以工作

票数 39
EN

Stack Overflow用户

发布于 2010-03-29 12:18:30

"as“语法是未来的首选语法,然而,如果您的代码需要使用旧的Python版本(2.6是第一个支持新版本的),那么您将需要使用逗号语法。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2535760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档