Python TypeError消息使用名称而不是qualname
我发现以下行为:Python TypeError消息使用名称而不是qualname,python,python-3.x,typeerror,qualified-name,Python,Python 3.x,Typeerror,Qualified Name,我发现以下行为: >>> 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 "<std
>>> 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'
>>def():
... def g(a、b):
... 返回a+b
... 返回g
>>>f()__
... 'g'
>>>f()__
... 'f、 .g'
>>>f()(2)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:g()缺少1个必需的位置参数:“b”
我希望错误消息显示所涉及函数的\uuuuuuqalname\uuuu
,而不仅仅是\uuuuuu name\uuuu
。这也是您自己编写此类消息时的推荐做法
我可以对此做些什么(例如启动时的配置)?
或者这是一个错误/功能
显示qualname将使调试更加容易,尤其是在使用装饰器或lambda时
Python3.6.1这是不可配置的;它是在解释器内部硬编码的。如果你对此有强烈的感觉。考虑到
\uuuuu qualname\uuuuu
是一个较新的功能,他们可能没有考虑或没有考虑在这种情况下使用它
更新:看起来有,但在过去几年中没有看到任何活动