psb60984
Янв. 26, 2016 22:19:24
Python 3.5.1 x64
Я ожидаю, что такое не будет работать
def test(my_int: int) -> str:
return str(my_int)
if __name__ == '__main__':
test('my_int')
Однако оно работает

Хочу что бы хотя бы при несовпадении типов формальных и фактических аргументов функции программа крашилась.
Нашел декоратор Это единственный способ?
JOHN_16
Янв. 26, 2016 23:06:19
а оно и не должно крашится. Это всего лишь подсказка по типам для программистов, IDE, check утилитам и тп.
Питон язык с динамической типизацией, и ломать ее никто не будет.
Например в вашем случае - что если передать в качестве my_int объект, который ведет себя как int ? Что должна сделать программа? Упасть потому что это явно не int, или работать потому что объект реализует все возможности int ? Это так, вопрос на подумать, в сообществе разработчиков ядра Python это даавно решили.