提问人:Nafees Anwar 提问时间:2/21/2020 更新时间:2/21/2020 访问量:343
python 中的 __name__ 有什么重要意义?
What is so important about __name__ in python?
问:
为每个 python 函数分配一个属性。例如__name__
>>> def f(*args, **kwargs):
... pass
...
>>> f.__name__
'f'
现在,如果我们用一些装饰器来装饰这个函数,我们基本上会返回另一个具有不同的函数__name__
>>> def d(f):
... def w(*args, **kwargs):
... f(*args, **kwargs)
... return w
...
>>> f = d(f)
>>> f.__name__
'w'
强烈建议使用 from 来修饰返回的函数,这样可以将 和 等信息复制到原始函数中。wraps
functools
__name__
__doc__
>>> from functools import wraps
>>> def d(f):
... @wraps(f)
... def w(*args, **kwargs):
... f(*args, **kwargs)
... return w
...
>>> f = d(f)
>>> f.__name__
'f'
我的问题是,如果我们不习惯复制信息,我们会遇到哪些严重的麻烦?简单地说,它应该被复制的如此重要吗?简单的代码,就像我的示例一样,如果我们不使用 .wraps
__name__
wrap
我可以想到一个问题是序列化。例如,Django 不允许使用 lambda 表达式(它们是无名的)用作模型字段的默认值。
有人可以添加一些更有问题的例子吗?同样的问题也适用于类装饰器。
答: 暂无答案
上一个:何时使用哈希标签?
评论
__name__
__doc__
__name__