有人能解释一下为什么在python2.7中“raisea,b,c”和“raise(a,b,c)”是相同的吗。你知道吗
我试图找到有关如何从here和here处理元组的信息,但我无法确定是否可以使用上述表达式来代替其他表达式。你知道吗
以下是一些背景。
我有一个Python2代码,它有很多下面的语句
raise e,v,t
python3给出了这个语法错误。
将其转换为以下内容可以避免python3编译器错误,但我想验证python2和python3中的意图是否保持相同。你知道吗
raise (e,v,t)
Tags:
raise
从未将元组作为参数。在python2中,语法是这样的:它看起来像一个元组,这就是你的困惑所在。python3的语法发生了巨大的变化,删除了冗余的异常类类型,并用关键字from
代替逗号。你知道吗在Python 2中:
在Python 3中变为:
永远不要将元组传递给
raise
。它做不到你所期望的。你知道吗在python2和python3上,
raise
被记录为不接受元组。但是,python2在raise
实现中有一个weird code path,如果raise
的第一个(或唯一的)参数是一个元组,它将被它的第一个元素反复替换,直到Python到达一个不是元组的元素。我不知道这是为什么,但它的意思是被当作
这是一个demo。python3的行为是more sensibly,出错是因为元组不是例外。你知道吗
在python3上引发异常的语法发生了变化。python2语句
是现在
或者,如果
value
是ExceptionType
的实例不幸的是,这些语法是不兼容的,以至于您甚至不能同时编写这两个语法并根据Python版本选择运行哪一个。在你的代码运行之前,你会得到一个语法错误。你知道吗
解决这个问题的最简单方法是使用兼容性库。例如,使用^{} :
相关问题 更多 >
编程相关推荐