问题:Python试试…除逗号与“ as”外
在except语句中“,”和“ as”之间有什么区别,例如:
try:
pass
except Exception, exception:
pass
和:
try:
pass
except Exception as exception:
pass
2.6中的第二种语法合法吗?它可以在Windows上的CPython 2.6中运行,但是cygwin中的2.5解释器抱怨它无效。
如果它们在2.6中均有效,那我应该使用哪个?
回答 0
权威性文件是PEP-3110:捕获异常
摘要:
- 在Python 3.x中,使用
as
被要求对异常分配给一个变量。 - 在Python 2.6+中,请使用
as
语法,因为它的模棱两可远,并且与Python 3.x向前兼容。 - 在
as
不支持Python 2.5和更早版本的情况下,请使用逗号版本。
回答 1
是的,这是合法的。我正在运行python 2.6
try:
[] + 3
except Exception as x:
print "woo hoo"
>>>
woo hoo
更新:使用该as
语法还有另一个原因。,
正如其他人指出的那样,使用会使事情变得更加模棱两可。这就是与众不同的原因。从Python 2.6开始,有multicatch
一个功能允许您在一个代码except
块中捕获多个异常。在这种情况下,说起来更具表现力和Python风格
except (exception1, exception2) as e
而不是说
except (exception1, exception2), e
仍然可以工作
回答 2
“ as”语法是首选的语法,但是,如果您的代码需要使用较旧的Python版本(第一个支持新版本的2.6是),则需要使用逗号语法。
回答 3
如果要支持所有python版本,可以使用如下sys.exc_info()
函数:
try:
a = 1/'0'
except (ZeroDivisionError, TypeError):
e = sys.exc_info()[1]
print(e.args[0])
回答 4
从Python 3.7开始(不确定其他版本),不再支持’逗号’语法:
源文件exception_comma.py
:
try:
result = 1/0
except Exception, e:
print("An error occurred")
exit(1)
exit(0)
$ python --version --> Python 2.7.10
$ python exception_comma.py
An error occurred
$ python3 --version --> Python 3.7.2
$ python3 exception_comma.py
File "exception_comma.py", line 3
except Exception, e:
^
SyntaxError: invalid syntax
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。