UFO ET IT

괄호없이 Python 3 인쇄

ufoet 2020. 11. 18. 21:50
반응형

괄호없이 Python 3 인쇄


print파이썬 2의 진술로 사용하지만, 지금은 파이썬 3에 괄호를 필요로하는 기능이되었다.

어쨌든 Python 3에서 이러한 괄호를 억제 할 수 있습니까? 인쇄 기능을 다시 정의하여?

그래서 대신

print ("Hello stack over flowers")

다음을 입력 할 수 있습니다.

print "Hello stack over flowers"

Python 3에서 인쇄하려면 한 쌍의 괄호가 필요하지만 print함수이기 때문에 더 이상 공백이 필요하지 않습니다 . 그래서 그것은 하나의 추가 캐릭터입니다.

여전히 한 쌍의 괄호를 입력하는 것이 "불필요한 시간 소모적"이라는 것을 알게된다면 그렇게 p = print하여 몇 개의 문자를 저장할 수 있습니다 . 새 참조를 함수에 바인딩 할 수 있지만 키워드에는 바인딩 할 수 없기 때문에이 print단축키는 Python 3 에서만 수행 할 수 있습니다 .

파이썬 2 :

>>> p = print
  File "<stdin>", line 1
    p = print
            ^
SyntaxError: invalid syntax

파이썬 3 :

>>> p = print
>>> p('hello')
hello

코드의 가독성이 떨어지지 만 인쇄 할 때마다 몇 개의 문자가 저장됩니다.


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

Autohotkey를 사용하여 매크로를 만듭니다. AHK는 무료이며 설치가 간단합니다. www.autohotkey.com

alt-p와 같이 매크로를 할당 할 수 있습니다.

!p::send print(){Left}

그러면 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으로 변환 하는 사용 하는 것이 좋습니다.


printPython 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

괄호없이 할 수있는 유일한 방법은 파이썬 2에서와 같이 키워드를 사용하는 것입니다. 수동으로 키워드를 정의 할 수 없습니다.


I finally figured out the regex to change these all in old Python2 example scripts. Otherwise use 2to3.py.

Try it out on Regexr.com, doesn't work in NP++(?):

find:     (?<=print)( ')(.*)(')
replace: ('$2')

for variables:

(?<=print)( )(.*)(\n)
('$2')\n

for label and variable:

(?<=print)( ')(.*)(',)(.*)(\n)
('$2',$4)\n

In Python 3, print is a function, whereas it used to be a statement in previous versions. As @holdenweb suggested, use 2to3 to translate your code.

참고URL : https://stackoverflow.com/questions/32122868/python-3-print-without-parenthesis

반응형