我有一个如下所示的函数:
def fun(a,b,c=None):
pass
当我在 python 3 中将此函数调用为 fun(1)
时,它给我错误为 TypeError: fun() miss 1 requiredpositional argument: 'b'
这是可以理解的,但是当我在 python 2 中调用这个函数时,它给了我错误,因为 TypeError: fun() 需要至少 2 个参数(给定 1 个)
。
所以我想在 python 2 中捕获这个错误,因为它在 python 3 中捕获,而不切换到 python 3。我如何才能实现这一点?另外,如果我为此编写一个装饰器,我需要在装饰器外部保留函数的签名。
最佳答案
你想实现什么目标? python2 和 python3 都抛出“TypeError”,这意味着调用者滥用了函数“fun”
def foo(a, b, c = None):
pass
try:
foo(1)
except TypeError:
print("TypeError")
为 python2 调用它:
python2 code_for_exception_type_error.py
TypeError
和 python3:
python3 code_for_exception_type_error.py
TypeError
关于python-2.7 - 在Python中编写异常TypeError的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42343238/