print
Kiedyś oświadczenie w Pythonie 2, ale teraz stało się to funkcja, która wymaga nawiasów w Pythonie 3.
Czy w ogóle można pominąć te nawiasy w Pythonie 3? Może przez ponowne zdefiniowanie funkcji drukowania?
Więc zamiast
print ("Hello stack over flowers")
Mógłbym wpisać:
print "Hello stack over flowers"
()
jest niepotrzebnie czasochłonne.Odpowiedzi:
Chociaż do drukowania w Pythonie 3 potrzebujesz pary nawiasów, nie potrzebujesz już spacji po
print
, ponieważ jest to funkcja. Więc to tylko jeden dodatkowy znak.Jeśli nadal uważasz, że wpisanie jednej pary nawiasów jest „niepotrzebnie czasochłonne”, możesz to zrobić
p = print
i zaoszczędzić w ten sposób kilka znaków. Ponieważ możesz powiązać nowe odniesienia z funkcjami, ale nie ze słowami kluczowymi, tenprint
skrót możesz wykonać tylko w Pythonie 3.Python 2:
>>> p = print File "<stdin>", line 1 p = print ^ SyntaxError: invalid syntax
Python 3:
>>> p = print >>> p('hello') hello
Dzięki temu kod będzie mniej czytelny, ale za każdym razem, gdy coś wydrukujesz, zaoszczędzisz tych kilka znaków.
źródło
Używanie
print
bez nawiasów w kodzie Pythona 3 nie jest dobrym pomysłem. Nie tworzy też aliasów itp. Jeśli to łamie umowę, użyj Pythona 2.Jednak
print
bez nawiasów może być przydatne w powłoce interaktywnej. Tak naprawdę nie chodzi o zmniejszenie liczby znaków, ale raczej o uniknięcie konieczności dwukrotnego naciskania klawisza Shift za każdym razem, gdy chcesz coś wydrukować podczas debugowania. IPython umożliwia wywoływanie funkcji bez używania nawiasów, jeśli zaczynasz linię ukośnikiem: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
A jeśli włączysz
autocall
, nie będziesz musiał nawet wpisywać ukośnika:In [3]: %autocall Automatic calling is: Smart In [4]: print var ------> print(var) Hello world
źródło
Użyj Autohotkey, aby zrobić makro. AHK jest darmowy i prosty w instalacji. www.autohotkey.com
Możesz przypisać makro do, powiedzmy, alt-p:
To spowoduje, że alt-p wypisze print () i przeniesie kursor do wewnątrz parenów.
Lub jeszcze lepiej, aby bezpośrednio rozwiązać problem, definiujesz automatyczną zamianę i ograniczasz jej zakres do sytuacji, gdy otwarty plik ma rozszerzenie .py:
#IfWinActive .py ;;; scope limiter :b*:print ::print(){Left} ;;; I forget what b* does. The rest should be clear #IfWinActive ;;; remove the scope limitation
To gwarantowane, bezbolesne, przejrzyste rozwiązanie.
źródło
Nie. To zawsze będzie błąd składni w Pythonie 3. Rozważ użycie
2to3
do przetłumaczenia kodu na Python 3źródło
shift
+9
..... potem znowushift
+0
jest wyczerpujące.print
powinno być wolne od bezużytecznych technik debugowania, takich jak para nawiasów.print
była tego warta.Skrypt AHK to świetny pomysł. Tylko dla zainteresowanych musiałem to trochę zmienić, aby działało dla mnie:
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
źródło
Nie możesz, ponieważ jedynym sposobem na zrobienie tego bez nawiasów jest użycie słowa kluczowego, jak w Pythonie 2. Nie możesz ręcznie zdefiniować słowa kluczowego, więc nie.
źródło
W końcu wymyśliłem wyrażenie regularne, aby zmienić to wszystko w starych przykładowych skryptach Python2. W przeciwnym razie użyj 2to3.py.
Wypróbuj na Regexr.com, nie działa w NP ++ (?):
find: (?<=print)( ')(.*)(') replace: ('$2')
dla zmiennych:
(?<=print)( )(.*)(\n) ('$2')\n
dla etykiety i zmiennej:
(?<=print)( ')(.*)(',)(.*)(\n) ('$2',$4)\n
źródło
(?<=print)( ')(.*)(')
\('$2'\)
print ('string')
, aby łatwiej było podświetlić plik do druku, a następnie użyć automatycznego zamykania wielu redaktorów, aby dodać nawiasy, a następnie cytaty.W Pythonie 3 print jest funkcją, podczas gdy w poprzednich wersjach była instrukcją. Jak zasugerował @holdenweb, użyj 2to3, aby przetłumaczyć swój kod.
źródło