Quiero anotar un tipo de variable en un bucle for. Intenté esto:

for i: int in range(5):
    pass

Pero no funcionó, obviamente.

Lo que espero es trabajar autocompletar en PyCharm 2016.3.2. Preanotación como esta:

i: int
for i in range(5):
    pass

No ayuda

PD La anotación previa funciona para PyCharm> = 2017.1

75
grepcake 13 ene. 2017 a las 21:47

4 respuestas

La mejor respuesta

De acuerdo con PEP 526, esto no está permitido:

Además, uno no puede anotar variables utilizadas en un for o with declaración ; se pueden anotar con anticipación, de manera similar a desempaque de tuplas

Anótelo antes del bucle:

i: int
for i in range(5):
    pass

PyCharm 2018.1 y superior ahora reconoce el tipo de variable dentro del bucle. Esto no era compatible con versiones anteriores de PyCharm.

86
alecxe 2 jul. 2018 a las 18:50

No sé si esta solución es compatible con PEP o solo una característica de PyCharm, pero hice que funcionara así

for i in range(5): #type: int
  pass

Y estoy usando Pycharm Community Edition 2016.2.1

31
David Vasquez 12 jul. 2017 a las 16:49

Ninguna de las respuestas aquí fue útil, excepto para decir que no puedes. Incluso la respuesta aceptada usa la sintaxis del documento PEP 526, que no es una sintaxis válida de Python. Si intentas escribir

x: int

Verás que es un error de sintaxis.

Aquí hay una solución útil:

for __x in range(5):
    x = __x  # type: int
    print(x)

Haz tu trabajo con x. PyCharm reconoce su tipo y funciona el autocompletado.

-3
Edward Ned Harvey 6 jun. 2017 a las 14:33

Esto funciona bien para mi en PyCharm (usando Python 3.6)

for i in range(5):
    i: int = i
    pass
9
Samir 11 sep. 2017 a las 16:11