[python] Python에서“SyntaxError : ‘print’호출시 괄호가 없음”은 무엇을 의미합니까?

print파이썬에서 명령문 을 사용하려고하면 다음과 같은 오류가 발생합니다.

>>> print "Hello, World!"
  File "<stdin>", line 1
    print "Hello, World!"
                        ^
SyntaxError: Missing parentheses in call to 'print'

그게 무슨 뜻이야?



답변

이 오류 메시지는 Python 3을 사용하여 예제를 따르거나 Python 2 print문 을 사용하는 프로그램을 실행하려고 함을 의미합니다 .

print "Hello, World!"

위의 설명은 Python 3에서는 작동하지 않습니다. Python 3에서는 인쇄 할 값 주위에 괄호를 추가해야합니다.

print("Hello, World!")

“SyntaxError : ‘print’를 호출 할 때 괄호가 누락되었습니다 ‘ 는 Python 3을 실행하는 동안 Python 2 자습서를 따르려고하는 사용자를 돕기 위해 Python 3.4.2에 추가 된 새로운 오류 메시지입니다.

Python 3에서 인쇄 값은 고유 한 명령문에서 일반 함수 호출로 변경되었으므로 이제 괄호가 필요합니다.

>>> print("Hello, World!")
Hello, World!

이전 버전의 Python 3에서 인터프리터는 무엇이 잘못 될 수 있는지에 대한 유용한 힌트를 제공하지 않고 일반적인 구문 오류를보고합니다.

>>> print "Hello, World!"
  File "<stdin>", line 1
    print "Hello, World!"
                        ^
SyntaxError: invalid syntax

에 관해서는 이유 print 가 아니라 당신이 후행 공백과 표준 에러에 여러 항목을 인쇄하는 것이 아니라 선을 끝처럼 많은 일을 복잡하게했던 방법, 문장의 기본 형태에 관련되지 않은 파이썬 3의 일반적인 기능이되었다.

파이썬 2에서 :

>>> import sys
>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6
1 2 3 4 5 6

파이썬 3에서 :

>>> import sys
>>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr)
1 2 3 4 5 6

2017 년 9 월 Python 3.6.3 릴리스부터 Python 2.x 인쇄 구문과 관련된 일부 오류 메시지가 업데이트되어 Python 3.x 대응 기능을 권장합니다.

>>> print "Hello!"
  File "<stdin>", line 1
    print "Hello!"
                 ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?

“인쇄 호출에 누락 된 괄호”사례는 컴파일 시간 구문 오류이므로 원시 소스 코드에 액세스 할 수 있으므로 제안 된 대체의 나머지 행에 전체 텍스트를 포함 할 수 있습니다. 그러나 현재 해당 표현 주위에 따옴표를 사용하여 시도하지는 않습니다 (불가능하지 않고 충분히 복잡하지 않습니다).

TypeError오른쪽 시프트 연산자 발생도 정의되었다 :

>>> print >> sys.stderr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?

이 오류는 코드를 컴파일 할 때가 아니라 코드가 실행될 때 발생하므로 원시 소스 코드에 액세스 할 수 없으므로 사용자가 실제로 입력 한 내용 대신 제안 된 대체 표현식에 메타 변수 ( <message><output_stream>)를 사용합니다. . 구문 오류 사례와 달리 사용자 정의 오른쪽 이동 오류 메시지에서 Python 표현식을 따옴표로 묶는 것은 간단합니다.


답변

불행히도, 오래된 xkcd 만화 는 더 이상 완전히 최신 상태가 아닙니다.

https://imgs.xkcd.com/comics/python.png

파이썬 3.0부터 다음과 같이 작성해야합니다 :

print("Hello, World!")

그리고 누군가는 여전히 그 antigravity라이브러리 를 작성해야 합니다 🙁


답변

Python 2에서 Python 3으로 구문이 변경되었습니다. Python 2에서

print "Hello, World!" 

작동하지만 Python 3에서는 괄호를 다음과 같이 사용하십시오.

print("Hello, World!")

이것은 스칼라와 동일하며 Java에 가깝습니다.


답변

코드가 Python 2와 3에서 모두 작동해야하는 경우 프로그램 시작시이를로드하여이 작업을 수행 할 수 있습니다.

from __future__ import print_function   # If code has to work in Python 2 and 3!

그런 다음 Python 3 방식으로 인쇄 할 수 있습니다.

print("python")

새 줄을 만들지 않고 무언가를 인쇄하려면 다음을 수행하십시오.

for number in range(0, 10):
    print(number, end=', ')


답변

Python 3에서는 다음과 같이 만 인쇄 할 수 있습니다.

print("STRING")

그러나 파이썬 2에서는 괄호가 필요하지 않습니다.


답변

기본적으로 Python 3.x부터 print괄호와 함께 사용해야 합니다.

Python 2.x : print “반지의 제왕”

Python 3.x : print ( “반지의 제왕”)


설명

print이었다 2.X는 하지만 A의 기능3.X . 여기에는 여러 가지 좋은 이유가 있습니다.

  1. Python 3.x의 함수 형식을 사용하면 쉼표로 구분하여 여러 항목을 인쇄 할 때 더 많은 유연성이 제공됩니다.
  2. 명령문에 인수 스플래 팅을 사용할 수 없습니다. 3.x에서 구분 기호로 인쇄 할 항목 목록이있는 경우 다음을 수행 할 수 있습니다.
>>> items = ['foo', 'bar', 'baz']
>>> print(*items, sep='+')
foo+bar+baz
  1. 문장을 무시할 수 없습니다. 인쇄 동작을 변경하려면 함수일 때 수행 할 수 있지만 명령문 일 때는 수행 할 수 없습니다.

답변

나는 또한 그냥 사이의 구문 변화에 대한 모든 것을 알고 있었다는 것을 추가 할 수 Python2.7Python3, 내 코드를 제대로으로 작성되었습니다 print("string")심지어
print(f"string")

그러나 디버깅 시간이 지나면 bash 스크립트가 다음과 같이 python을 호출한다는 것을 알았습니다.

파이썬 file_name.py

이것은 기본적으로 내 파이썬 스크립트를 호출하는 효과 python2.7가있어 오류가 발생했습니다. 그래서 bash 스크립트를 다음과 같이 변경했습니다.

python3 file_name.py

다음 중 python3을 사용하여 오류를 수정 한 스크립트를 실행합니다.