Как аннотировать типы в цикле 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 распознает его тип, и автозаполнение работает.