Как аннотировать типы в цикле for-loop
Я хочу аннотировать тип переменной в for
-loop. Я попробовал это:
for i: int in range(5):
pass
Но это явно не сработало.
Я ожидаю, что будет работать автозаполнение в PyCharm 2016.3.2. Предварительная аннотация:
i: int
for i in range(5):
pass
не помогает.
PS Предварительная аннотация работает для PyCharm> = 2017.1
Ответы
Ответ 1
Согласно PEP 526, это не допускается:
Кроме того, нельзя аннотировать переменные, используемые в выражении for
или with
; они могут быть аннотированы досрочно, аналогично распаковке кортежа
Аннотировать его до цикла:
i: int
for i in range(5):
pass
PyCharm 2018.1 и теперь распознает тип переменной внутри цикла. Это не поддерживалось в старых версиях PyCharm.
Ответ 2
Я не знаю, является ли это решение совместимым с PEP или просто функцией PyCharm, но я сделал это так
for i in range(5): #type: int
pass
и я использую Pycharm Community Edition 2016.2.1
Ответ 3
Это хорошо работает для моего в PyCharm (используя Python 3.6)
for i in range(5):
i: int = i
pass
Ответ 4
Ни один из ответов здесь не был полезен, кроме как сказать, что вы не можете. Даже принятый ответ использует синтаксис из документа PEP 526, который не является допустимым синтаксисом python. Если вы попытаетесь ввести
x: int
Вы увидите синтаксическую ошибку.
Вот полезное обходное решение:
for __x in range(5):
x = __x # type: int
print(x)
Работайте с x
. PyCharm распознает его тип, и автозаполнение работает.