#python
#python
Вопрос:
Я новичок в программировании в целом. Я хотел бы знать, почему этот символ используется в нескольких кодах. Я имею в виду, какова цель этого способа объявления переменной? Полезно ли это?
Например, допустим, я определяю
say_hello1 = "hello everybody"
Я также мог бы определить ту же переменную, используя:
say_hello2 : str = "hello everybody"
Или..
say_hello3 : float = "hello everybody" # I know this is not a float variable, I'm doing it on purpose
Каждая переменная (say_hello1, say_hello2 и say_hello3 ) будет того же типа (строка). Итак, какова цель этого способа объявления переменных? Это просто сказать, что переменная будет определенного типа? Или это меняет что-то еще (т.Е. Эффективность кода)?
Заранее спасибо.
Комментарии:
1. Это просто аннотация для удобства чтения.
2. Да, я так и думал, но я не был уверен в своих мыслях, хахах. Большое спасибо за комментарий!
3. Его питон прыгает в момент акулы. Он дает подсказки по типу, и IDE используют его для предоставления дополнительной информации при программировании. Но на самом деле, если вы читаете документы вызываемых вами функций, они вам не нужны.
4. Ознакомьтесь с PEP для этой функции, в нем объясняется обоснование добавления этой функции. python.org/dev/peps/pep-0484
5. Аннотации помогли PyCharm спасти меня от глупости. ошибки во многих случаях! Вызов функции с неправильным типом аргумента. Возвращает неправильный тип из функции. Все это легко случайно ошибиться, и PyCharm легко перехватить, если вы предоставите ему правильную информацию.
Ответ №1:
Это показывает, какую переменную вы ожидаете, что делает ваш код намного проще для чтения и понимания. Это также может помочь с линтерами и другими сторонними инструментами. Сам Python не будет смотреть на это afaik.
Взгляните сюда: https://docs.python.org/3/library/typing.html
Комментарии:
1. В частности, с
mypy
помощью — it вы можете обнаружить множество ошибок перед запуском вашего кода. Кроме того, это позволяет вашей IDE выделять ошибки.
Ответ №2:
Python не является строго типизированным языком. Это variable : type
просто для удобства чтения, не объявляет строго типизированные переменные. Позже вы можете изменить значение даже в другом типе.
Комментарии:
1. «просто для удобства чтения» — я с этим категорически не согласен. Это позволяет вам использовать статическую проверку типов (т. Е. mypy) для обнаружения ошибок перед запуском вашего кода. Если вы сделаете это, то «Позже вы сможете изменить значение, даже в другом типе» выдаст ошибку, которая сделает ваш код намного безопаснее.
Ответ №3:
Подсказки типа были введены в PEP-484. Цель состоит в том, чтобы позволить дополнительным инструментам выполнять статическую компоновку на основе приемлемых типов для переменных. Это включено, например, в PyCharm и используется mypy.
Но в любом случае Python — это динамический язык, и интерпретатор просто игнорирует эти объявленные подсказки типа.
Ответ №4:
В этом случае тип довольно очевиден, поэтому он не очень полезен, но предположим, что у вас есть базовый класс BaseClass
, который наследуют некоторые другие классы SubClassA
, а SubClassB
затем:
a: SubClassA = SubClassA() # not very useful
a: BaseClass = SubClassA() # indicates that you expect a given interface, no necessarily SubClassA
### another dev can safely replace code later on
a: BaseClassA = SubClassB()