почему python не нуждается в объявлении типа для python, в противном случае совет. не объявленного типа? - PullRequest
4 голосов
/ 23 сентября 2010

Если мы хорошо знаем тип переменной или параметра, почему бы не объявить их?

Я хотел бы знать, почему это плохо или не нужно.
Извините, я новичок в Python (примерно с 1 года) и до того, как начал работать с языками программирования C, VB, VB.NET и C #.

В Python я надеюсь, что во время компиляции будут обнаружены неверные типы параметров.

И я надеюсь, что у меня будет IDE, которая предложит мне все атрибуты переменной во время разработки. Может быть, я слишком склонен к Microsoft, но объявление типа переменной кажется мне основным.

Ответы [ 4 ]

9 голосов
/ 23 сентября 2010

Я уверен, что вы знаете функцию +.Итак, что это за тип?Числа?Ну, это работает для списков и строк тоже.Это даже работает для каждого объекта, который определяет __add__.Или в некоторых случаях, когда один объект определяет __radd__.

Так что сложно определить тип этой функции уже.Но Python позволяет даже определять эти методы во время выполнения, например, через дескрипторы или метакласс.Вы даже можете определить их на основе пользовательского ввода!

Поскольку Python очень динамичен, компилятору Python просто невозможно определить тип чего-либо (кроме литералов) без выполнения программы.Таким образом, даже если вы пишете аннотации, вы ничего не получите, проверка типов все равно будет выполняться во время выполнения!

4 голосов
/ 23 сентября 2010

Python использует динамическую типизацию (точнее, Duck Typing ), поэтому вам не нужно объявлять переменную. Это подход к программированию и стилю, который выбрали разработчики Python. Будучи языком высокого уровня, этот подход вписывается в философию Pythons о легкочитаемом коде.

Есть и другие языки, которые следуют этому подходу. (PHP).

2 голосов
/ 23 сентября 2010

Такова природа динамических языков.

Статическая типизация - это стиль Java / C #.(И даже C # теперь может выводить тип с помощью var.)

Это компромисс: вы заменяете безопасность типов на гибкость во время выполнения.

1 голос
/ 23 сентября 2010

Python строго типизирован , поэтому объявить тип переменной не нужно. (По понятным причинам вы обычно должны объявлять переменные!)

Причина этого в том, что исключения вызываются, если вы пытаетесь сделать что-то с типами, которые не поддерживаются, например, добавив целое число в строку:

>>> foo = "Hello"
>>> bar = 2
>>> foo + bar
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

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

...