Mithilfe der Funktionsanmerkungen von Python 3 ist es möglich, den Typ der Elemente anzugeben, die in einer homogenen Liste (oder einer anderen Sammlung) enthalten sind, um in PyCharm und anderen IDEs einen Hinweis auf den Typ zu geben.
Ein Pseudo-Python-Codebeispiel für eine Liste von int:
def my_func(l:list<int>):
pass
Ich weiß, dass es mit Docstring möglich ist ...
def my_func(l):
"""
:type l: list[int]
"""
pass
... aber ich bevorzuge den Anmerkungsstil, wenn es möglich ist.
python
python-3.x
type-hinting
Eric W.
quelle
quelle
type object is not subscriptable
bei der Definition der Funktion. Natürlich können Sie einen String verwenden:def my_func(L: 'list[int]')
aber ich weiß nicht, ob PyCharm ihn analysieren wird, während er die Docstrings analysiert ...'list[int]'
, entschuldige mich , wenn das nicht klar war.Antworten:
Beantwortung meiner eigenen Frage; Die TLDR-Antwort lautet
NeinJa .Update 2
Im September 2015 wurde Python 3.5 mit Unterstützung für Typ Hinweise veröffentlicht und enthält eine neue Eingabe - Modul . Dies ermöglicht die Angabe von Typen, die in Sammlungen enthalten sind. Ab November 2015 unterstützt JetBrains PyCharm 5.0 Python 3.5 vollständig und enthält Typhinweise, wie unten dargestellt.
Update 1
Ab Mai 2015 wurde PEP0484 (Type Hints) offiziell akzeptiert. Der Implementierungsentwurf ist auch bei github unter ambv / typehinting erhältlich .
Ursprüngliche Antwort
Ab August 2014 habe ich bestätigt, dass es nicht möglich ist, Python 3-Typanmerkungen zu verwenden, um Typen in Sammlungen anzugeben (z. B. eine Liste von Zeichenfolgen).
Die Verwendung formatierter Dokumentzeichenfolgen wie reStructuredText oder Sphinx ist eine praktikable Alternative und wird von verschiedenen IDEs unterstützt.
Es scheint auch, dass Guido über die Idee nachdenkt, Typanmerkungen im Geiste von mypy zu erweitern: http://mail.python.org/pipermail/python-ideas/2014-August/028618.html
quelle
Nachdem Python 3.5 offiziell veröffentlicht wurde, gibt es das Type Hints-Unterstützungsmodul -
typing
und das entsprechendeList
" "Typ" für die generischen Container.Mit anderen Worten, jetzt können Sie Folgendes tun:
quelle
Typkommentare wurden seit PEP 484 hinzugefügt
Dies funktioniert derzeit für mich auf PyCharm mit Python 3.6.4
Beispielbild in Pycharm
quelle
Mit der Unterstützung der BDFL ist es jetzt fast sicher, dass Python (wahrscheinlich 3.5) eine standardisierte Syntax für Typhinweise über Funktionsanmerkungen bereitstellt.
https://www.python.org/dev/peps/pep-0484/
Wie im PEP erwähnt, gibt es einen experimentellen Typprüfer (ähnlich wie Pylint, aber für Typen) namens mypy, der diesen Standard bereits verwendet und keine neue Syntax erfordert.
http://mypy-lang.org/
quelle
Ab Python 3.9 sind integrierte Typen in Bezug auf Typanmerkungen generisch (siehe PEP 585 ). Auf diese Weise können Sie den Elementtyp direkt angeben:
Verschiedene Tools unterstützen diese Syntax möglicherweise früher als Python 3.9. Wenn Anmerkungen zur Laufzeit nicht überprüft werden, ist die Syntax mit Anführungszeichen oder gültig
__future__.annotations
.quelle