In python 3.x print-arbeiten wie in python 2 (als Anweisung)
Frage ich mich, ob print-Funktion gemacht werden kann, arbeiten (ohne Veränderung der syntax, die alle über dem Platz) wie in python 2 und früher.
So, ich habe die Anweisung wie:
print "hello world"
Und ich wie die syntax funktioniert in python 3. Ich habe versucht, den Import der Bibliothek six
aber das hat nicht den trick tun (immer noch ein syntax-Fehler).
- Lol, ich will genau das gleiche. Ich mag alles, was über python 3 mit Ausnahme der print-Anweisung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, Sie können nicht. Die
print
- Anweisung Weg ist in Python 3; der compiler unterstützt es nicht mehr.Du kann machen
print()
funktionieren wie eine Funktion in Python 2; setzen Sie diese oben in jedem Modul, das verwendetprint
:Dadurch entfernen Sie die Unterstützung für die
print
- Anweisung in Python 2 wie ist es gegangen in Python 3, und Sie können dieprint()
- Funktion, die Schiffe mit Python 2.six
können nur helfen, Brücke-code geschrieben mit sowohl Python 2 und 3 im Sinn; das schließt das ersetzenprint
Aussagen mitprint()
Funktionen ersten.Werden Sie wahrscheinlich wollen, Lesen Sie die die die Portierung von Python 2-Code zu Python 3 howto; es werde Ihnen sagen, mehr über solche
from __future__
Importen als auch, als auch die Einführung Werkzeuge, wie Modernisieren und Futurize, die helfen können, zu automatisieren Befestigung Python-2-code zu arbeiten auf beiden Python 2 und 3.2to3
utility korrigieren Sie den Python-2-code automatisch.Können Sie das tool verwenden 2to3 ist ein Automatisiertes Python-2-3-code übersetzung, da @Martijn Pieters♦ gesagt :), können Sie sich über eine Fahrt werfen die alte python und die änderungen funktionieren in python 3, ich mache ein einfaches Beispiel, wie diese:
Ich diese Datei erstellt, python2.py:
wenn ich es mit python es zeigt offensichtlich:
so, verwandeln Sie es via terminal wie diesem:
parameter-w wird die Datei schreiben, wenn Sie wollen nur in die Zukunft sehen diese änderungen, ohne Sie anzuwenden, führen Sie es einfach ohne -w.
nach dem ausführen es wird sich zeigen, so etwas wie
Wird die Datei wie folgt Aussehen:
Können Sie verwenden, regex ersetzen, drucken code von python2 mit Python ist3:
Wenn Sie in Ordnung sind mit übergeordneten
builtins.__import__
und eine einfache regex-konvertieren Sie die print-Anweisungen, die keine Klammer dann können Sie das folgende tun. Beachten Sie, dass dies nicht wirklich ändern, die Datei, sobald Sie Sie importieren werde es Lesen, den code in einem string, zwicken, string, senden Sie dann die fixed-code compiler/ImporteurWenn Sie speichern Sie diesen code, um, sagen wir, pastimport.py, dann sagen wir, ich habe eine Datei namens juniper.py:
Nun, wenn ich anrufen möchte juniper.py von Python ist3, ich kann nur tun,
Und es wird laufen 🙂
Könnte dies wahrscheinlich schneller und mehr wie die typischen der Einfuhren mit caching und logging und so, aber ich verstehe nicht genau, wie und Wann die pyc-Dateien werden generiert, noch. Es mag auch Grenzfälle mit c plugins und so ich bin mir nicht sicher. So fühlen sich frei, um Verbesserungen vorschlagen, aber das ist zumindest ein proof-of-concept. Ich denke, Sie sollten in der Lage sein, um tatsächlich optimieren Sie die interpreter-Eingaben und die Werte der aktuellen Datei, aber ich bin das hantieren mit, dass gerade jetzt.
Auch technisch diese können Sie importieren python2-Datei (2to3 behebt xrange, drucken, etc.) und wenn diese Dateien importieren anderer Dateien python2 Sie werden umgewandelt werden, da dies überschreibt der import die jeder verwendet. Sie können auch implementieren, der beliebige operator-überladung, erfordern statische Typisierung, eigentlich mit Gehhilfen, und auch technisch import von Programmcode aus anderen Sprachen, oder ändern Sie python zusammen mit diesem einmaligen import. Aber ich schweife ab
print(1, 2)
, und Sie werden sehen, dass es nicht sicher ist zu laufen 2to3 auf Python 3-code.(1, 2)
(in der gleichen Datei, die hatprint a
) das ist genau das, was Python ist3 tut? Auch so etwas wieprint(1,2)\nprint('games', end='')
funktioniert auch gut