我发现以下行为:
>>> def f():
... def g(a,b):
... return a+b
... return g
>>> f().__name__
... 'g'
>>> f().__qualname__
... 'f.<locals>.g'
>>> f()(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: g() missing 1 required positional argument: 'b'
我希望错误消息显示所涉及功能的__qualname__
,而不仅仅是__name__
。亲自编写此类消息时,这也是afaik的推荐做法。
我可以对此做任何事情(例如,启动时进行配置)吗? 还是这是错误/功能?
显示质量名称将使调试更加容易,尤其是在使用装饰器或lambda时。
python 3.6.1
答案 0 :(得分:0)
这是不可配置的;它在解释器内部进行了硬编码。如果您对此有强烈的兴趣,请file a bug with the CPython folks。鉴于__qualname__
是一个较新的功能,因此他们可能没有考虑或绕过这种情况。
更新:看起来好像a bug already filed,但是最近几年没有任何活动。