Python 3에서는 모든 print 문을 괄호로 묶어야 합니다. 문자열을 콘솔에 출력할 때 괄호로 감싸지 않으면 "SyntaxError: Missing parentheses in call to 'print'" 오류가 발생합니다.
이 가이드에서는 해당 오류의 의미와 Python에서 print 문을 올바르게 사용하는 방법을 설명하고, 실제 예제를 통해 오류를 해결하는 과정까지 살펴보겠습니다.
SyntaxError: Missing parentheses in call to 'print'란?
Python 3는 이 프로그래밍 언어의 세 번째 메이저 업데이트 버전으로, 최근 몇 년간 가장 널리 사용되는 표준 버전으로 자리 잡았습니다.
Python 3에서는 print 문의 작성 방식이 크게 변경되었습니다. Python 2에서는 독립형 print 문을 사용해 별도의 괄호 없이 콘솔에 내용을 출력할 수 있었습니다.
하지만 Python 3에서 print는 함수입니다. 따라서 다른 일반적인 함수를 호출할 때와 마찬가지로, 콘솔에 출력할 내용을 반드시 괄호로 감싸야 합니다.
오류 발생 예제
네 번째 학년 반 학생들 중 이름이 "A"로 시작하는 학생의 이름을 출력하는 프로그램을 작성해 보겠습니다. 먼저 반 학생들의 이름이 담긴 리스트를 정의합니다.
students = ["Alex", "Alexander", "Piper", "Molly", "Hannah"]
다음으로 리스트의 모든 항목을 순회하는 for 루프를 작성합니다. 루프 안에서는 if 문을 사용해 각 이름이 "A"로 시작하는지 확인합니다.
for s in students:
if s.startswith("A") == True:
print s
startswith() 메서드는 문자열이 특정 문자나 문자열로 시작하는지 여부를 확인합니다. 위 코드는 "students" 리스트의 각 이름이 "A"로 시작하는지 검사합니다.
이어서 프로그램 실행이 완료되었음을 알려주는 print 문을 코드 마지막에 추가합니다.
print "Above are all the students whose names begin with A."
이제 프로그램을 실행해 보겠습니다.
File "main.py", line 5
print s
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(s)?
프로그램에 구문 오류(syntax error)가 있다는 메시지가 출력됩니다.
해결 방법
다행히도 Python은 오류 메시지 자체에 해결 방법을 친절하게 안내하고 있습니다. 오류 메시지의 "Did you mean print(s)?" 부분이 바로 그것입니다.
이러한 친절한 메시지가 등장하게 된 배경도 있습니다. 이전 버전의 Python 3에서는 print 문에 괄호를 누락하면 "invalid syntax"라는 모호한 오류만 표시되었습니다. 구문 오류는 다양한 원인으로 발생할 수 있기 때문에 이 메시지만으로는 원인을 파악하기 어려웠습니다. 이를 개선하기 위해 Python은 "괄호 누락" 전용 오류 메시지를 새롭게 도입한 것입니다.
이 문제를 해결하려면 콘솔에 출력하려는 모든 값을 괄호로 감싸면 됩니다.
for s in students:
if s.startswith("A") == True:
print(s)
print("Above are all the students whose names begin with A.")
print 라인의 변수 "s"를 괄호로 묶었고, 마지막에 콘솔에 출력하는 문자열 역시 괄호로 감쌌습니다. 프로그램이 정상적으로 동작하는지 확인해 보겠습니다.
Alex
Alexander
Above are all the students whose names begin with A.
실행 결과를 보면 이름이 "A"로 시작하는 학생이 두 명(Alex, Alexander) 있음을 확인할 수 있습니다. 학생 리스트의 순회가 끝나면 프로그램은 결과를 설명하는 메시지를 출력하며 종료됩니다.
마무리
Python의 "SyntaxError: Missing parentheses in call to 'print'" 오류는 콘솔에 값을 출력할 때 해당 값을 괄호로 묶지 않고 출력하려고 할 때 발생합니다.
이 오류를 해결하려면 콘솔에 출력하려는 모든 문장에 괄호를 추가하면 됩니다. Python 3에서 print는 더 이상 문(statement)이 아니라 함수이기 때문입니다. 함수를 실행하려면 반드시 괄호를 사용해 호출해야 한다는 점을 기억하세요.
이제 이 흔한 Python 오류를 전문가처럼 빠르게 진단하고 수정할 수 있을 것입니다!