2013-12-08 4 views

ответ

3

Python - динамически типизированный язык, поэтому ему не нужны дженерики. Это может сделать что-то вроде этого

def addTen(inputData): 
    if isinstance(inputData, int): 
     return inputData + 10 
    elif isinstance(inputData, str): 
     return int(inputData) + 10 
    else: 
     return 10 

Вы можете передавать любой тип данных для любой функции и эта функция может выбрать для обработки различных типов данных по-разному.

+0

В то время, когда вы написали этот ответ, не было модуля 'typing'. Однако сейчас это часть стандартной библиотеки (с Python 3.5). – nme

14

№ Python не является статически типизированным языком, поэтому им не нужно. Генераторы Java обеспечивают только защиту типа времени компиляции; они ничего не делают во время выполнения. У Python нет никакой безопасности типа времени компиляции, поэтому было бы нецелесообразно добавлять дженерики, чтобы усилить проверки типа времени компиляции, которых нет у Python.

Список, например, представляет собой нетипизированную коллекцию. Нет никакого эквивалента различий между List<Integer> и List<String>, потому что список Python может хранить любой тип объекта.

+1

Обновление относительно этого, так как это верхний пост - https://www.python.org/dev/peps/pep-0484/#generics – Juxhin

+4

Python не статически типизирован, но тип hinting для методов членов может быть статически типизирован. Таким образом, есть необходимость в них. – tribbloid

Смежные вопросы