print
Раньше заявление в Python 2, но теперь она стала функцией , которая требует скобки в Python 3.
Есть ли способ убрать эти скобки в Python 3? Может быть, переопределив функцию печати?
Итак, вместо
print ("Hello stack over flowers")
Я мог напечатать:
print "Hello stack over flowers"
()
занимает излишне много времени.Ответы:
Хотя вам нужна пара круглых скобок для печати в Python 3, вам больше не нужен пробел
print
, потому что это функция. Так что это всего лишь один лишний символ.Если вы по-прежнему находите набор одной пары круглых скобок «излишне трудоемким», вы можете сделать
p = print
и сохранить несколько символов таким образом. Поскольку вы можете связывать новые ссылки с функциями, но не с ключевыми словами, вы можете делать это толькоprint
в Python 3.Python 2:
>>> p = print File "<stdin>", line 1 p = print ^ SyntaxError: invalid syntax
Python 3:
>>> p = print >>> p('hello') hello
Это сделает ваш код менее читабельным, но вы будете сохранять эти несколько символов каждый раз, когда что-то печатаете.
источник
Использование
print
без скобок в коде Python 3 - не лучшая идея. Также не создаются псевдонимы и т. Д. Если это мешает, используйте Python 2.Однако
print
без скобок может быть полезно в интерактивной оболочке. На самом деле речь идет не об уменьшении количества символов, а о том, чтобы избежать необходимости дважды нажимать Shift каждый раз, когда вы хотите что-то напечатать во время отладки. IPython позволяет вызывать функции без использования скобок, если вы начинаете строку с косой черты: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
И если вы включите
autocall
, то даже косую черту набирать не нужно:In [3]: %autocall Automatic calling is: Smart In [4]: print var ------> print(var) Hello world
источник
Используйте Autohotkey для создания макроса. AHK бесплатен и очень прост в установке.www.autohotkey.com
Вы можете назначить макрос, скажем, alt-p:
Это заставит alt-p выдать print () и переместить курсор внутрь скобок.
Или, что еще лучше, чтобы напрямую решить вашу проблему, вы определяете автоматическую замену и ограничиваете ее область действия, когда открытый файл имеет расширение .py:
#IfWinActive .py ;;; scope limiter :b*:print ::print(){Left} ;;; I forget what b* does. The rest should be clear #IfWinActive ;;; remove the scope limitation
Это гарантированное, безболезненное, прозрачное решение.
источник
Нет. Это всегда будет синтаксической ошибкой в Python 3. Рассмотрите
2to3
возможность перевода кода на Python 3.источник
shift
+9
..... опять жеshift
+0
исчерпывающий.print
он не должен быть обременен бесполезными методами отладки, такими как пара круглых скобок.print
, я считаю, того стоит.Скрипт AHK - отличная идея. Просто для тех, кто заинтересован, мне нужно было немного изменить его, чтобы он работал на меня:
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
источник
Вы не можете, потому что единственный способ сделать это без скобок - сделать это ключевым словом, как в Python 2. Вы не можете вручную определить ключевое слово, поэтому нет.
источник
Я наконец придумал регулярное выражение, чтобы изменить все это в старых сценариях примера Python2. В противном случае используйте 2to3.py.
Попробуйте на Regexr.com, не работает в NP ++ (?):
find: (?<=print)( ')(.*)(') replace: ('$2')
для переменных:
(?<=print)( )(.*)(\n) ('$2')\n
для метки и переменной:
(?<=print)( ')(.*)(',)(.*)(\n) ('$2',$4)\n
источник
(?<=print)( ')(.*)(')
\('$2'\)
print ('string')
, чтобы можно было легче выделить печатный текст, а затем использовать автоматическое закрытие многих редакторов, чтобы добавить круглые скобки, а затем кавычки.В Python 3 print - это функция, тогда как в предыдущих версиях она была выражением. Как предложил @holdenweb, используйте 2to3 для перевода вашего кода.
источник