Pet*_*ham 240 python python-2.6
除语句中','和'as'之间有什么区别,例如:
try:
pass
except Exception, exception:
pass
Run Code Online (Sandbox Code Playgroud)
和:
try:
pass
except Exception as exception:
pass
Run Code Online (Sandbox Code Playgroud)
第二种语法在2.6中合法吗?它适用于Windows上的CPython 2.6,但cygwin中的2.5解释器抱怨它无效.
如果它们在2.6中都有效,我应该使用哪个?
Amb*_*ber 278
最终文件是PEP-3110:捕捉异常
摘要:
as
为变量分配异常.as
语法,因为它不那么模糊,并且与Python 3.x向前兼容.as
不受支持.ins*_*get 38
是的,这是合法的.我正在运行Python 2.6
try:
[] + 3
except Exception as x:
print "woo hoo"
>>>
woo hoo
Run Code Online (Sandbox Code Playgroud)
更新:使用as
语法还有另一个原因.,
正如其他人指出的那样,使用会使事情变得更加含糊不清; 而这就是产生差异的原因.从Python 2.6开始,multicatch
允许您在一个except
块中捕获多个异常.在这种情况下,它更具表现力和pythonic
except (exception1, exception2) as e
Run Code Online (Sandbox Code Playgroud)
而不是说
except (exception1, exception2), e
Run Code Online (Sandbox Code Playgroud)
这仍然有效
小智 9
如果你想支持所有的python版本,你可以使用sys.exc_info()函数,如下所示:
try:
a = 1/'0'
except (ZeroDivisionError, TypeError):
e = sys.exc_info()[1]
print(e.args[0])
Run Code Online (Sandbox Code Playgroud)
(来源:http://python3porting.com/noconv.html)
归档时间: |
|
查看次数: |
83874 次 |
最近记录: |