gpt4 book ai didi

python - Python 2.x 和 3.x 中用于引发异常的有效语法?

转载 作者:太空狗 更新时间:2023-10-29 20:47:15 24 4
gpt4 key购买 nike

我如何将此代码移植到 Python 3,以便它可以在 Python 2 和 Python3 中运行?

raise BarException, BarException(e), sys.exc_info()[2]

(从 http://blog.ionelmc.ro/2014/08/03/the-most-underrated-feature-in-python-3/ 复制)

奖励问题
做类似的事情是否有意义

IS_PYTHON2 = sys.version_info < (3, 0)

if IS_PYTHON2:
raise BarException, BarException(e), sys.exc_info()[2]
# replace with the code that would run in Python 2 and Python 3 respectively
else:
raise BarException("Bar is closed on Christmas")

最佳答案

您将不得不求助于 exec(),因为您不能在 Python 3 中使用 3 参数语法;它会引发语法错误。

一如既往six library你已经覆盖了,移植到不依赖于其他 六个 定义,它们的版本如下所示:

import sys

if sys.version_info[0] == 3:
def reraise(tp, value, tb=None):
if value is None:
value = tp()
if value.__traceback__ is not tb:
raise value.with_traceback(tb)
raise value

else:
exec("def reraise(tp, value, tb=None):\n raise tp, value, tb\n")

现在您可以使用:

reraise(BarException, BarException(e), sys.exc_info()[2])

无需进一步测试 Python 版本。

关于python - Python 2.x 和 3.x 中用于引发异常的有效语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34463087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com