Ich möchte einen Variablentyp in a kommentieren for-Schleife. Ich habe das versucht, aber es hat nicht funktioniert:
for i: int in range(5):
pass
Ich erwarte, dass die automatische Vervollständigung in PyCharm 2016.3.2 funktioniert, aber die Verwendung der Vorannotation hat nicht funktioniert:
i: int
for i in range(5):
pass
PS Pre-Annotation funktioniert für PyCharm >= 2017.1.
Nur eine Anmerkung: Normalerweise sollten Sie es nicht benötigen, da der Typ von der Bereichsfunktion abgeleitet wird (dies ist relevant für alle intern deklarierten Variablen).
Außerdem eine kann keine Variablen annotieren, die in a verwendet werden for oder with
Aussage; Sie können im Voraus kommentiert werden, ähnlich wie beim Entpacken von Tupeln
Kommentieren Sie es vor der Schleife:
i: int
for i in range(5):
pass
PyCharm 2018.1 und höher erkennt jetzt den Typ der Variablen innerhalb der Schleife. Dies wurde in älteren PyCharm-Versionen nicht unterstützt.
Aber es wird eine Inspektionsinfo geben Local variable 'i' value is not used.
– Wolke
23. Januar 2019 um 12:57 Uhr
@SiminJie ja, denn das ist nur ein Beispiel.
– Alekse
23. Januar 2019 um 13:02 Uhr
Dies funktioniert auch gut für for-Schleifen über etwas, das aus zwei mehreren Objekten entpackt wird: zB key: str df: pd.DataFrame for key, df in myData.items(): ...
– topher217
17. Juli 2021 um 5:23 Uhr
@Cloud was meinst du? Mein Code lief ohne Probleme …?
– Charly Parker
29. Juli um 21:05 Uhr
David Vasquez
Ich weiß nicht, ob diese Lösung PEP-kompatibel oder nur eine Funktion von PyCharm ist, aber ich habe es so gemacht:
for i in range(5): #type: int
pass
und ich verwende Pycharm Community Edition 2016.2.1
Dies ist zwar nicht PEP 526-konform, funktioniert aber in PyCharm (mindestens ab 2017.2.1) und hat den zusätzlichen Vorteil, dass es auch in Python 3.0-3.5 funktioniert (das die in Python 3.6 eingeführte Vorannotationssyntax nicht unterstützt).
– Phönix
13. August 2017 um 12:24 Uhr
FYI: Dieses Format ist ausdrücklich erlaubt/erwähnt in PEP 484 (auch kompatibel mit Python 2.7)
Dieses Formular funktioniert auch mit For/Enumerate-Schleifen und PyCharm 2018. z for index, area in enumerate(area_list): # type: int, AreaInfo
– einfacher Benutzer
4. November 2019 um 3:49 Uhr
Dies funktioniert gut für mein in PyCharm (mit Python 3.6)
for i in range(5):
i: int = i
pass
Ich denke, dies sollte die akzeptierte Antwort sein, da dies genau das tut, was angefordert wurde, und im Gegensatz zu der derzeit akzeptierten keine anderen Fehler und / oder Warnungen ausgibt.
– Jani Kärkkäinen
12. August 2019 um 6:56 Uhr
MyPy beschwert sich tatsächlich, wenn Sie die Variable in der for-Schleife neu definieren
– Giovanni di Milia
26. September 2019 um 16:05 Uhr
Definieren Sie die Variable nicht neu. i: int reicht aus und Sie werden keine Beschwerden bekommen.
– Benutzer136036
6. März 2020 um 13:03 Uhr
Eine elegante Option, für mich sieht es besser aus, Typen in Kommentaren anzugeben.
– Vlad Iliescu
28. Juni um 9:59 Uhr
Keine der Antworten hier war nützlich, außer zu sagen, dass Sie es nicht können. Sogar die akzeptierte Antwort verwendet die Syntax aus dem PEP 526-Dokument, was keine gültige Python-Syntax ist. Wenn Sie versuchen, es einzugeben
x: int
Sie werden sehen, dass es sich um einen Syntaxfehler handelt.
Hier ist eine nützliche Problemumgehung:
for __x in range(5):
x = __x # type: int
print(x)
Erledige deine Arbeit mit x. PyCharm erkennt seinen Typ und die automatische Vervollständigung funktioniert.
14304000cookie-checkWie kommentiere ich Typen in einer for-Schleife?yes
Nur eine Anmerkung: Normalerweise sollten Sie es nicht benötigen, da der Typ von der Bereichsfunktion abgeleitet wird (dies ist relevant für alle intern deklarierten Variablen).
– gdoumenc
2. Juni 2020 um 9:06 Uhr