Die print
früher ein Statement in Python 2, aber jetzt wurde es eine Funktion , die Klammer in Python 3 erfordert.
Gibt es überhaupt eine Möglichkeit, diese Klammern in Python 3 zu unterdrücken? Vielleicht durch Neudefinition der Druckfunktion?
Also statt
print ("Hello stack over flowers")
Ich könnte tippen:
print "Hello stack over flowers"
()
ist jedoch unnötig zeitaufwändig.Antworten:
Obwohl Sie zum Drucken in Python 3 zwei Klammern benötigen, benötigen Sie danach kein Leerzeichen mehr
print
, da es sich um eine Funktion handelt. Das ist also nur ein einziges zusätzliches Zeichen.Wenn Sie immer noch feststellen, dass das Eingeben eines einzelnen Klammerpaars "unnötig zeitaufwändig" ist, können Sie auf
p = print
diese Weise einige Zeichen speichern. Da Sie neue Verweise an Funktionen, jedoch nicht an Schlüsselwörter binden können, können Sie dieseprint
Verknüpfung nur in Python 3 ausführen.Python 2:
>>> p = print File "<stdin>", line 1 p = print ^ SyntaxError: invalid syntax
Python 3:
>>> p = print >>> p('hello') hello
Dadurch wird Ihr Code weniger lesbar, aber Sie speichern diese wenigen Zeichen jedes Mal, wenn Sie etwas drucken.
quelle
Die Verwendung
print
ohne Klammern in Python 3-Code ist keine gute Idee. Es werden auch keine Aliase usw. erstellt. Wenn dies ein Deal Breaker ist, verwenden Sie Python 2.Allerdings
print
ohne Klammern können in dem interaktiv Shell nützlich sein. Es geht nicht wirklich darum, die Anzahl der Zeichen zu verringern, sondern die Notwendigkeit zu vermeiden, jedes Mal zweimal die Umschalttaste zu drücken, wenn Sie beim Debuggen etwas drucken möchten. Mit IPython können Sie Funktionen ohne Klammern aufrufen, wenn Sie die Zeile mit einem Schrägstrich beginnen:Python 3.6.6 (default, Jun 28 2018, 05:43:53) Type 'copyright', 'credits' or 'license' for more information IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: var = 'Hello world' In [2]: /print var Hello world
Und wenn Sie sich einschalten
autocall
, müssen Sie nicht einmal den Schrägstrich eingeben:In [3]: %autocall Automatic calling is: Smart In [4]: print var ------> print(var) Hello world
quelle
Verwenden Sie den Autohotkey, um ein Makro zu erstellen. AHK ist kostenlos und kinderleicht zu installieren. www.autohotkey.com
Sie können das Makro beispielsweise alt-p zuweisen:
Dadurch löscht alt-p print () und bewegt den Cursor in die Parens.
Oder, noch besser, um Ihr Problem direkt zu lösen, definieren Sie einen Autoreplace und beschränken seinen Umfang darauf, wann die geöffnete Datei die Erweiterung .py hat:
#IfWinActive .py ;;; scope limiter :b*:print ::print(){Left} ;;; I forget what b* does. The rest should be clear #IfWinActive ;;; remove the scope limitation
Dies ist eine garantierte, schmerzlose und transparente Lösung.
quelle
Nein. Dies ist in Python 3 immer ein Syntaxfehler. Verwenden
2to3
Sie möglicherweise , um Ihren Code in Python 3 zu übersetzenquelle
shift
+9
..... dann wiedershift
+0
ist erschöpfend.print
sollte es nicht durch nutzlose Debugging-Techniken wie ein Paar Klammern belastet werden.print
, meiner Meinung nach gelohnt.Das AHK-Skript ist eine großartige Idee. Nur für Interessierte musste ich es ein wenig ändern, um für mich zu arbeiten:
SetTitleMatchMode,2 ;;; allows for a partial search #IfWinActive, .py ;;; scope limiter to only python files :b*:print ::print(){Left} ;;; I forget what b* does #IfWinActive ;;; remove the scope limitation
quelle
Dies ist nicht möglich, da Sie dies nur ohne Klammern tun können, indem Sie ein Schlüsselwort wie in Python 2 verwenden. Sie können ein Schlüsselwort nicht manuell definieren, also nein.
quelle
Ich habe endlich die Regex herausgefunden, um diese alle in alten Python2-Beispielskripten zu ändern. Verwenden Sie andernfalls 2to3.py.
Probieren Sie es auf Regexr.com aus, funktioniert nicht in NP ++ (?):
find: (?<=print)( ')(.*)(') replace: ('$2')
für Variablen:
(?<=print)( )(.*)(\n) ('$2')\n
für Label und Variable:
(?<=print)( ')(.*)(',)(.*)(\n) ('$2',$4)\n
quelle
(?<=print)( ')(.*)(')
\('$2'\)
print ('string')
, damit der Ausdruck leichter hervorgehoben werden kann, und dann das automatische Schließen vieler Editoren verwendet, um die Klammern und dann Anführungszeichen hinzuzufügen.In Python 3 ist print eine Funktion, während es in früheren Versionen eine Anweisung war. Verwenden Sie, wie @holdenweb vorgeschlagen hat, 2to3 , um Ihren Code zu übersetzen.
quelle