.ubuntufan, если я пишу input в 2.7 и ввожу там число - то для меня ожидаемо, что он вернет число. Но фактически в терминале я ввожу символы (цифр). И вот это (символы цифр в число) и есть преобразование. То что его делает функция у меня не спросив - и есть неявность этого преобразования. Хотя в данном контексте преобразование для меня не только полезно, но и ожидаемо. А вот если я там напишу неверное число (допустим буква в середине) - input вернет строку.

я код программы рассчитывал на число. И ошибка возникнет не на вводе (что было бы логично), а уже там, где будет использована строка на месте где ожидалось число. Т.е. фактическое место возникновения ошибки отнесено от места где произойдет наведенная ошибка.
Теперь про строки.
Допустим я открываю на чтение файл - и добавляю в каждую строку текста дополнительный символ в начало строки (символ задается константой в программе). Куда девать результат в контексте примера - не важно.
И вот тут у меня происходит простое действие: <строка константа> + <строка прочитанная из файла>.
И вот тут происходит ошибка преобразования символов.

Я хочу сразу спросить - а кто вообще просил какие-то символы преобразовывать?

- я просил просто сложить две строки....
Но далее выясняется, что складываю то я не две строки. А строку <строка константа> и байтовую последовательность, которой является <строка прочитанная из файла> и вот тут в Py2.7 к массиву байтов будет применен (самим интерпретатором) decode... только вот кодировку для этого decode у меня никто не спросил

- Это и произошло неявное преобразование. Или вы считаете оно явное? Но я же не написал в своем коде ни одного decode или encode. Я просто сложил две (как я думал) строки.
Так что позвольте мне с вами не согласится - python 2.7 во множестве мест делает неявные преобразования данных. И часто оно бывает и на руку программисту, но если оказывается не так - то ошибка, которую выдает интерпретатор возникает совсем не там где была ошибка с типом (который был неявно преобразован). Что на деле усложняет диагностику.
Собственно эти косяки и обсуждались активно, когда вырабатывался стандарт Python 3. И в Python 3.x уже просто нельзя сложить байтовый массив со строкой. Как и input - выдает строку символов, а не число (даже если эти символы соответствуют верной записи числа).