2016-06-24 6 views
6

Typ Hinweise sind jetzt in der Python 3.5-Version verfügbar. In der Beschreibung (PEP 484) die Ziele (und die Nicht-Ziele) sind klar ausgesetzt:Verwenden von Typhinweisen zum Konvertieren von Python in Cython

Rationale und Tore

Dieser PEP eine Standardsyntax für Typenannotationen bieten soll, die Öffnung Python-Code um leichtere statische Analyse und Refactoring, potentielle Laufzeittypüberprüfung und (möglicherweise in einigen Kontexten) Codegenerierung unter Verwendung von Typinformation. [...]

Von diesen Zielen ist die statische Analyse am wichtigsten.

Nicht Ziele

Mit Typ Hinweise für Performance-Optimierungen wird für den Leser als Übung.

Auf der anderen Seite, für eine lange Zeit statisch Syntax zur Verbesserung der Leistung Cython wurde. Üblicherweise schreiben einige Teile ihres Codes mit Cython-Syntax um, kompilieren sie und importieren sie dann als unabhängige Module zurück. Es ist eine schmerzhafte Aufgabe, all das auf einer großen Codebasis zu tun. Aber das Schlimmste ist, dass Sie selbst dann, wenn Sie alle oben genannten Schritte richtig befolgen, keine Garantie haben, dass Sie eine echte Verbesserung erfahren (aufgrund von Kompatibilitätsproblemen, die bei Verwendung einiger Module auftreten können).

Wäre eine schwierige Aufgabe, ein Tool schreiben, die diese neue Art verwendet Hinweise Dinge im Code verstreut automatisch übersetzen sie in Cython Syntax und möglicherweise den Rest der Arbeit tun (kompilieren sie in Module und importieren Sie alle sie zurück)? Es wäre daher möglich, die gleiche Sprachensyntax in der gesamten Codebasis zu verwenden.

Theoretisch ist es möglich, ein Tool wie das zu schreiben, aber ich bin mir nicht sicher, ob es wert ist (in Bezug auf Komplexität, es zu schreiben und die wirkliche Verbesserung, die Ausbeute wäre).

Danke.

+0

Wenn Sie 'Cython' verwendet haben, wie viel des Python-Codes haben Sie konvertiert? Ich dachte, das Ideal wäre es, sich auf eine Teilmenge zu konzentrieren, bei der die Geschwindigkeit zählt, und den Rest in Python zu belassen. Oder verwenden Sie 'cython' als Brücke zu bestehendem C++/Fortran-Code. – hpaulj

+0

Ich stimme dir teilweise zu. Aber ich denke, es wäre so besser, eine einheitliche Syntax zu haben. Aber es ist in Ordnung, wie @hpaulj sagte, mein Thema ist nicht für Stackoverflow. Es tut uns leid. – GustavoIP

Antwort

3

Jemand anders fragte nur nach 484 und Cython, PEP-484 Type Annotations with own types, und ich antwortete mit einem Thread von ein paar Monaten zurück über 484 und numpy.

Ich habe Zweifel über die Eignung dieses Themas für Stackoverflow. Es ist ein Forschungsthema und keine Frage, wie ich dieses Coding-Problem lösen soll.

Aufgrund der begrenzten Lesbarkeit sind die Typ-Hinweise in 484 vorläufig, und jede Verwendung ist auf den von den 484 Autoren entwickelten Code-Checker beschränkt. Py3 hat seit langer Zeit Anmerkungen, aber ich habe sehr wenige Beispiele für Code gesehen, der sie enthält. Sicherlich nicht in dem numpy Code, auf den ich mich hier konzentriere.

Ein weiterer Punkt ist, dass cython und numpy (und numba) mit Py2 verwendet werden, genauso viel, wenn nicht mehr, als PY3. So werden die neuesten Glöckchen in Py 3.5 von diesen Benutzern normalerweise ignoriert. Der Operator @ ist der einzige neue Zusatz, den numpy Benutzer verwenden.

Sie sind willkommen, antworten, aber ich kann diese Frage für die Schließung nominieren, basierend darauf, dass es ein Duplikat oder Off-Thema ist.

Das typing Modul wird an https://github.com/python/typing entwickelt

mypy den Typ-Checker auf 484 basiert, https://github.com/python/mypy (lustig, ist ~/mypy das Verzeichnis, in dem ich meine SO alle testen Skripte setzen.)

Das ist, wo Schneiden Edge Python-Typ Überprüfung wird durchgeführt, nicht hier.

+0

Entschuldigung, ich hatte nichts gefunden, als ich hier in Stackoverflow und Google gesucht habe. Vielen Dank für Ihre Zeit! – GustavoIP