目前,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
功能的签名可能会更容易。
答案 0 :(得分:1)
修改def是可能的,但根本不是正确的(最简单的)方法。
最简单的方法是使用python 3.它支持类型注释,但默认情况下它不对它们做任何事情。
This answer将python 3的注释与装饰器和类型过滤辅助函数相结合。有很多基于装饰的解决方案和类型检查的配方。如果您想要其他示例,请搜索“python注释类型检查”。
请注意,如果因某些原因无法使用python 3,上面的问题也包含了对python 2的装饰器的答案。