В Python3 добавлен синтаксис аннотаций. То есть, в объявлении функции можно указать какие типы данных у нас тут крутятся. От простых, до сложносоставных.
Например, есть такая функция:
def my_func(x: int, y: float) -> float:В этой функции явно указаны типы, а значит, что IDE сможет адекватно анализировать ваш код и использовать всевозможные вспомогательные штуки. Автокомплит, или различные предупреждения о неверном использовании типа.
val = x * y
return val
Между тем, в Python2 также можно делать аннотации так, чтобы PyCharm их понял. Записываются они иначе, с помощью комментариев (type hint). Вот та же функция для Python2:
def my_func(x, y): # type: (int, float) -> floatИнтерпретатору не мешает, а для IDE подсказки😊
val = x * y
return val
Но знаете ли вы, что такой способ можно использовать и не только для аннотирования функции? Можно указать тип любой переменной в любой строке!
Например, у вас есть внешний API в котором типы не объявлены вообще никак. А хочется иметь автокомплиты для возвращаемых значений.
Вот пример:
import some_apiДля переменной value IDE не сможет сообразить автокомплиты или проверку типов. Но с помощью такого же type hint мы можем ему помочь! Даже подсветка будет работать)
def my_func() -> str:
value = some_api.get_value()
# ... life without autocomplete is pain(((
return value
...После этого у переменной value появится автокомплит и всё остальное.
value = some_api.get_value() # type: str
# autocomplete for str here!!!
...
Теперь вы можете обозначать типы переменных хоть на каждой строке 😎
Запоминаем формат:
[code] # type: [Type]
#tricks