답변:
이 오류 메시지는 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 표현식을 따옴표로 묶는 것은 간단합니다.
코드가 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.x부터 print
괄호와 함께 사용해야 합니다.
Python 2.x : print "반지의 제왕"
Python 3.x : print ( "반지의 제왕")
print
이었다 문 에 2.X는 하지만 A의 기능 에 3.X . 여기에는 여러 가지 좋은 이유가 있습니다.
>>> items = ['foo', 'bar', 'baz'] >>> print(*items, sep='+') foo+bar+baz
나는 또한 그냥 사이의 구문 변화에 대한 모든 것을 알고 있었다는 것을 추가 할 수 Python2.7
와 Python3
, 내 코드를 제대로으로 작성되었습니다 print("string")
심지어
print(f"string")
...
그러나 디버깅 시간이 지나면 bash 스크립트가 다음과 같이 python을 호출한다는 것을 알았습니다.
파이썬 file_name.py
이것은 기본적으로 내 파이썬 스크립트를 호출하는 효과 python2.7
가있어 오류가 발생했습니다. 그래서 bash 스크립트를 다음과 같이 변경했습니다.
python3 file_name.py
다음 중 python3을 사용하여 오류를 수정 한 스크립트를 실행합니다.
여기에 직접 답변을 제외하고는 파이썬 2와 3의 다른 주요 차이점에 주목해야합니다. 공식 파이썬 위키 는 거의 모든 주요 차이점을 다루며 버전 중 하나를 사용해야 할 때에 중점을 둡니다. 이 블로그 게시물 은 현재 파이썬 우주와 어떻게 든 파이썬 3으로 이동하는 해결되지 않은 퍼즐을 설명하는 훌륭한 작업을 수행합니다.
내가 알 수있는 한, 당신은 파이썬 언어를 배우기 시작했습니다. 파이썬 3 경로를 계속 진행하기 전에 위에서 언급 한 기사를 고려해야합니다. 구문 중 일부를 변경해야 할뿐만 아니라 어떤 패키지를 사용할 수 있는지 (python 2의 이점) 코드에서 만들 수있는 잠재적 인 최적화 (python 3의 장점)도 고려해야합니다. .