Я новичок в Python и был счастлив открыть для себя функцию подсказки типов в Python3. Я прочитал PEP 484 и нашел этот вопрос о SO, в котором человек, задававший вопрос, задавался вопросом, почему тип возвращаемого значения функции не проверялся. Респондент указал на раздел в PEP 484, в котором говорится, что проверка не происходит во время выполнения и что предполагается, что подсказка типа должна быть проанализирована внешней программой.
Я запустил python3 REPL и решил попробовать
>>> def greeting() -> str: return 1
>>> greeting()
1
Все идет нормально. Мне стало интересно узнать о параметрах функции, поэтому я попробовал следующее:
>>> def greeting2(name: str) -> str: return 'hi ' + name
>>> greeting2(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in greeting2
TypeError: Can't convert 'int' object to str implicitly
Вот где кажется, что колеса отрываются, потому что кажется, что, по крайней мере, в отношении параметров функции, проверка ЕСТЬ. У меня вопрос: почему проверяются параметры, но не тип возвращаемого значения?
greeting2
с целым числом, а не строкой. - person Simeon Visser   schedule 12.01.2017