如果没有版本检查或'six',我如何使用'except MyError,e:'vs'except MyError as e',使用Python 2&;3.
我正在寻找一种不用检查使用的Python版本就可以做到这一点的方法 有关此问题的详细信息,请参阅,因为此问题扩展了该问题 基本上,我可以将其概括为“如果基于方法的异常引发基于语言的异常怎么办?” 根据,下面显示了Python 3和Python 2的正确语法: Python 3:如果没有版本检查或'six',我如何使用'except MyError,e:'vs'except MyError as e',使用Python 2&;3.,python,python-3.x,error-handling,python-2.5,backport,Python,Python 3.x,Error Handling,Python 2.5,Backport,我正在寻找一种不用检查使用的Python版本就可以做到这一点的方法 有关此问题的详细信息,请参阅,因为此问题扩展了该问题 基本上,我可以将其概括为“如果基于方法的异常引发基于语言的异常怎么办?” 根据,下面显示了Python 3和Python 2的正确语法: Python 3: except MyError as e Python 2,对于版本2.6+: except MyError as e #OR# except MyError, e Python 2.5-: except My
except MyError as e
Python 2,对于版本2.6+:
except MyError as e
#OR#
except MyError, e
Python 2.5-:
except MyError, e
一点背景:
我遇到了一个棘手的情况,脚本需要在许多古老的Linux机器上运行,其中将使用各种不同的Python版本,包括Python 2.5
不幸的是,我不得不将其作为一个单一的、大小有限的文件分发,这对我可以执行的导入量造成了一些限制
另外,我对其中一个可能误传其版本的情况感兴趣,或者对不必检查版本就可以使用的代码感兴趣。当然,这是可以解决的 您唯一的选择是避免异常分配,并将其从结果中拉出来,取而代之的是: 这将适用于Python1.5及更高版本
但是,您可能会遇到其他不兼容和困难;编写多语言Python代码(同时适用于Python2.x和3.x的代码)只有在Python2.6和更高版本上才真正可行。您真的需要支持Python2.5吗?然后检查
six
的源代码,看看它们能做些什么。检查Python运行的版本(通常包括一个示例行和捕获一个异常)并不意味着使用两组不同的源代码。而且,在2.0版中表现良好。使用它。//,为什么要这样做?另外,如果你解释为什么所有明显的事情都不适合你,你可能会发现你的需求会受到更少的阻碍。@Nathanbassanese:你能不能不要那样做,那就是/
的事情?没有必要这样做,而且会极大地分散注意力。@NathanBasanese:因为这样会分散谈话的注意力。在Stack上遇到的每个人都会问你这件事。一次又一次,因为它像一个受伤的拇指一样突出。你不想让人们把注意力集中在你的问题上吗?/,这太完美了。我担心,我所处的这种情况在“企业”发展中相当普遍。
try:
# ...
except Exception: # note, no ", e" or "as e"
import sys
e = sys.exc_info()[1]