字符串连接上的Python 3.6 vs 3.5 TypeError消息

Ant*_*aux 11 python string typeerror python-3.5 python-3.6

'Hello ' + 1 在Python 3.5和3.6上没有返回相同的错误消息:

  • Python 3.5.2: TypeError: Can't convert 'int' object to str implicitly
  • Python 3.6.0: TypeError: must be str, not int

这是一个简单的措辞改变还是有更微妙的背后?

Jim*_*ard 6

这只是一些涉及字符串对象的代码清理.当使用不兼容的对象使它们"更具信息性"时,它还引入了错误消息的一些更改.

请参阅:问题26057 -PyUnicode_FromObject()如果您感兴趣,请避免不必要地使用引入此更改的内容.

这里没有什么微妙的,它仍然是非法的,所有,作者将错误信息改为他认为更清楚的东西.

编辑:我创建了问题29116 - 连接上的Make strbytes错误消息符合其他序列以解决此特定消息,同时还解决了当我们对它们执行愚蠢的事情时具有类似详细响应的字节类型的错误消息:

>>> b'' + ''
TypeError: can't concat bytes to str
Run Code Online (Sandbox Code Playgroud)

  • 事实上,新的错误信息更糟糕,任何正确实现`__radd__`的对象都可以在这里工作,所以``must be str``显然是错误的.使用切换操作数得到的错误消息更清晰:`TypeError:+:'int'和'str'`的不支持的操作数类型. (2认同)