How can I overload the “def” function in Python so it accepts typed arguments?
本问题已经有最佳答案,请猛点这里访问。
目前,python允许您定义如下函数
1 | def f(x, A): |
我想能够定义如下函数
1 | def f(x: int, A: list): |
因为我认为它可以减少程序员的错误。
我该怎么做?
现在我要求助于
1 2 | def f(x, A): assert type(x) == int and type(A) == list,"Invalid parameters to function f" |
但我认为,如果我能更改
修改def是可能的,但不是完全正确(最简单)的方法。
最简单的方法是使用python 3。它支持类型注释,尽管默认情况下它对它们不做任何操作。
这个答案将python 3的注释与decorator和类型过滤助手函数结合在一起。有很多基于装饰器的解决方案和类型检查食谱。如果需要其他示例,请搜索"python注释类型检查"。
请注意,如果出于某种原因不能使用python 3,上面的问题也包括了关于python 2的装饰器的答案。