Quiero anotar un tipo de variable en un for
bucle. Probé esto:
for i: int in range(5):
pass
Pero no funcionó, obviamente.
Lo que espero es autocompletar en PyCharm 2016.3.2. Pre-anotación como esta:
i: int
for i in range(5):
pass
no ayuda.
PS Pre-anotación funciona para PyCharm> = 2017.1
python
for-loop
pycharm
type-hinting
python-3.6
grepcake
fuente
fuente
Respuestas:
Según PEP 526 , esto no está permitido:
Anótelo antes del bucle:
i: int for i in range(5): pass
PyCharm 2018.1 y versiones posteriores ahora reconocen el tipo de variable dentro del bucle. Esto no fue compatible con versiones anteriores de PyCharm.
fuente
Local variable 'i' value is not used
.i
ini: int
todavía no se usará incluso si lo usai
en el bucle. Creo que esto es un defecto para este tipo de anotación.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
fuente
for index, area in enumerate(area_list): # type: int, AreaInfo
Esto funciona bien para mi en PyCharm (usando Python 3.6)
for i in range(5): i: int = i pass
fuente
i: int
es suficiente y no recibirá ninguna queja.Ninguna de las respuestas aquí fue útil, excepto para decir que no puede. Incluso la respuesta aceptada usa la sintaxis del documento PEP 526, que no es una sintaxis válida de Python. Si intentas escribir
Verá que es un error de sintaxis.
Aquí hay una solución alternativa útil:
for __x in range(5): x = __x # type: int print(x)
Haga su trabajo con
x
. PyCharm reconoce su tipo y el autocompletado funciona.fuente