Python 3.6 vs 3.5 Сообщение TypeError при конкатенации строк

'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

Это простое изменение в формулировке или есть что-то более тонкое позади?

Ответ 1

Это была просто очистка кода, в котором участвовали строковые объекты. Он также ввел некоторые изменения в сообщениях об ошибках, когда несовместимые объекты используются, чтобы сделать их немного "более информативными".

Смотрите: Проблема 26057 - Избегайте ненужного использования PyUnicode_FromObject(), который представил это изменение, если вы заинтересованы.

Здесь нет ничего тонкого, это все еще незаконно и все, автор изменил сообщение об ошибке на то, что он считал более понятным.

Изменить: я создал Проблема 29116 - Сделать сообщения str и bytes сообщения об ошибках при конкатенации совместимыми с другими последовательностями для решения этой проблемы сообщение, также обращаясь к сообщению об ошибке для типов байтов, которые имели аналогичный подробный ответ, когда мы делаем с ними глупые вещи:

>>> b'' + ''
TypeError: can't concat bytes to str