如何重载" def" Python中的函数,所以它接受类型参数?

时间:2016-05-16 18:40:03

标签: python

目前,Python允许您定义类似

的功能
def f(x, A):

我希望能够定义像

这样的函数
def f(x: int, A: list):

因为我认为它会减少程序员的错误。

我该怎么做?

现在我正在诉诸

def f(x, A):
    assert type(x) == int and type(A) == list, "Invalid parameters to function f"

但我认为如果我可以更改def功能的签名可能会更容易。

1 个答案:

答案 0 :(得分:1)

修改def是可能的,但根本不是正确的(最简单的)方法。

最简单的方法是使用python 3.它支持类型注释,但默认情况下它不对它们做任何事情。

This answer将python 3的注释与装饰器和类型过滤辅助函数相结合。有很多基于装饰的解决方案和类型检查的配方。如果您想要其他示例,请搜索“python注释类型检查”。

请注意,如果因某些原因无法使用python 3,上面的问题也包含了对python 2的装饰器的答案。