我已经经历了PEP 3107中的前几个部分,但我仍然没有得到他们为该语言做了什么好事。在我看来,你可以使用装饰器添加元数据到函数。例如Python函数注释有什么好处?
def returns(return_type):
f.return_type = return_type # <- adding metadata here
return f
@returns(Foo)
def make_foo(): ...
您可以添加元数据来论证过了,它可以看起来很漂亮,如果你利用缺省参数,就像这样:
import inspect
def defaults_are_actually_metadata(f):
names, args_name, kwargs_name, defaults = inspect.getfuncspec(f)
f.parameter_metadata = dict(zip(names[-len(defaults):], defaults))
f.__defaults__ =()
return f
@defaults_are_actually_metadata
def haul(load="Stuff to be carried.",
speed_mph="How fast to move the load (in miles per hour)."): ...
至少我的初步印象是,注释是多余的:装饰可以做所有注释可以(和更多)。为元数据添加到函数时,为什么注释比装饰器更好?
现在,注释是一种实验,也是一种正在进行的工作,实际上[python-ideas邮件列表]中有一个最近的线程(http://mail.python .org/pipermail/python-ideas/2012-December/thread.html)可能会有所帮助。 –
@JohnY我想将您的答案标记为“正确”,但这不是“官方”答案! – allyourcode