Wie kommentiere ich Typen in einer for-Schleife?

Lesezeit: 3 Minuten

Benutzeravatar von grepcake
Kuchen

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).

    – gdoumenc

    2. Juni 2020 um 9:06 Uhr


Benutzeravatar von alecxe
Alex

Entsprechend PEP 526Das ist nicht erlaubt:

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

Benutzeravatar von David Vasquez
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)

    – Claude

    14. September 2018 um 10:56 Uhr


  • Dies ist auch eine gültige Option gem PEP 484

    – Marco

    11. Februar 2019 um 7:50 Uhr


  • 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.

1430400cookie-checkWie kommentiere ich Typen in einer for-Schleife?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy