异常类型错误写代码我有一个功能,它看起来像这样:在蟒蛇
def fun(a,b,c=None): pass
当我把这个功能在Python 3 fun(1)
,它给了我错误的TypeError: fun() missing 1 required positional argument: 'b'
这是可以理解的,但是当我在Python 2中调用这个函数,它给我错误为TypeError: fun() takes at least 2 arguments (1 given)
。
所以我想在python 2中捕获这个错误,因为它在python 3中被捕获而没有切换到python 3.我如何实现这一目标?另外,如果我正在为此编写一个装饰器,我需要保留装饰器之外的函数签名。
类型的错误没有什么不同,这是不同的信息。默认消息在'C'中定义,不能直接通过Python进行修改。您可以在Python 2中捕获异常,并在Python 3中用类似的异常消息重新引发异常(但需要大量内省调用堆栈和函数对象以查找调用中缺少的参数)。 –
我是python的新手。你能建议我做点什么吗? @ JimFasarakis-Hilliard –
老实说?只是不要使用Python 2是最好的建议。因为这个决定可能不是你自己决定的,不过,你总是可以看看stdlib中的'inspect'模块,它提供了内省功能,可以帮助你解决你的问题。 –