Je veux annoter un type de variable dans un for
-loop. J'ai essayé ceci:
for i: int in range(5):
pass
Mais cela n'a pas fonctionné, évidemment.
Ce que j'attends, c'est que la saisie semi-automatique fonctionne dans PyCharm 2016.3.2. Pré-annotation comme ceci:
i: int
for i in range(5):
pass
n'aide pas.
PS Pre-annotation fonctionne pour PyCharm> = 2017.1
python
for-loop
pycharm
type-hinting
python-3.6
grepcake
la source
la source
Réponses:
Selon PEP 526 , ce n'est pas autorisé:
Annotez-le avant la boucle:
i: int for i in range(5): pass
PyCharm 2018.1 et les versions ultérieures reconnaissent désormais le type de la variable à l'intérieur de la boucle. Cela n'était pas pris en charge dans les anciennes versions de PyCharm.
la source
Local variable 'i' value is not used
.i
dansi: int
ne sera toujours pas utilisé même que vous utilisezi
dans la boucle. Je pense que c'est un défaut pour ce genre d'annotation.Je ne sais pas si cette solution est compatible PEP ou simplement une fonctionnalité de PyCharm mais je l'ai fait fonctionner comme ça
for i in range(5): #type: int pass
et j'utilise Pycharm Community Edition 2016.2.1
la source
for index, area in enumerate(area_list): # type: int, AreaInfo
Cela fonctionne bien pour mon dans PyCharm (en utilisant Python 3.6)
for i in range(5): i: int = i pass
la source
i: int
est suffisant et vous ne recevrez aucune plainte.Aucune des réponses ici n'était utile, sauf pour dire que vous ne pouvez pas. Même la réponse acceptée utilise la syntaxe du document PEP 526, qui n'est pas une syntaxe python valide. Si vous essayez de taper
Vous verrez que c'est une erreur de syntaxe.
Voici une solution de contournement utile:
for __x in range(5): x = __x # type: int print(x)
Faites votre travail avec
x
. PyCharm reconnaît son type et la saisie semi-automatique fonctionne.la source