python-2.7 - 在Python中编写异常TypeError的代码

标签 python-2.7 python-3.x typeerror python-decorators

我有一个如下所示的函数:

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/

相关文章:

python - 如何在pyqt5中使用creator在qmessagebox中显示变量

javascript - 未捕获的类型错误未定义不是函数 flotjs

Ocaml: "contains type variables that cannot be generalized"

python - 使用 findall 、 Lxml 迭代 Xml

Python:三元运算符语法错误

python - 将整数添加到类属性

python - 如何使用正则表达式从看似乱码的文本中提取某些子文本模式?

python - 通过python字符串函数删除字符串多余字符

python - scikit-learn 的 BallTree 出现类型错误

Python/Pygame字符快速闪烁