【发布时间】:2013-02-24 08:16:26
【问题描述】:
我想在调用某些函数之前定义一些通用装饰器来检查参数。
类似:
@checkArguments(types = ['int', 'float'])
def myFunction(thisVarIsAnInt, thisVarIsAFloat)
''' Here my code '''
pass
旁注:
- 类型检查只是在这里展示一个示例
- 我使用的是 Python 2.7,但 Python 3.0 应该也很有趣
EDIT 2021:有趣的是,从长远来看,type hinting 和 mypy 的类型检查并没有反python。
【问题讨论】:
-
请注意,这通常是一个非常糟糕的主意——它违背了 Python 的本质。在几乎所有情况下,类型检查都是一件坏事。还值得注意的是,如果您在 3.x 中,使用参数注释来执行此操作可能更有意义。
-
@Lattyware:强制函数参数和返回类型是the original pep for decorators中的示例之一
-
@Lattyware:这不是pythonic,但如果你真的想这样做,装饰器和参数注释是最好的方法。
-
你们是在拖钓吗?还是我在这个哲学问题上变得很敏感? ;)
-
我不是在拖钓,我只是在说明大多数情况下,如果您进行类型检查,那么您做错了,最好换一种方式。经常看到人们进行 SO 类型检查并生成不灵活的函数,这些函数由于类型检查而无法正常工作或效率高。