0

我发现以下行为:

>>> 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__. 在自己编写此类消息时,这也是推荐的做法。

我可以对此做些什么吗(例如启动时的配置)?或者这是一个错误/功能?

显示 qualname 将使调试更容易,尤其是在使用装饰器或 lambda 时。


蟒蛇 3.6.1

4

1 回答 1

0

这是不可配置的;它在解释器内部被硬编码。如果您对此有强烈的感觉,请向 CPython 人员提交一个错误。鉴于这__qualname__是一个较新的功能,他们可能没有考虑或考虑在这种情况下使用它。

更新:看起来已经提交了一个错误,但在过去几年中没有看到任何活动。

于 2018-08-01T11:33:41.783 回答