Python SyntaxError란 무엇인가?
구문(Syntax)은 프로그래밍 언어를 작성할 때 지켜야 하는 규칙을 의미합니다. 각 언어는 저마다 고유한 구문 규칙을 가지고 있으며, 이는 자연어의 문법이나 문장 부호와 비슷하다고 생각할 수 있습니다. 예를 들어 영어의 물음표(?)는 그리스어의 물음표(;)와 다릅니다.
구문 오류가 발생했다는 것은 프로그래밍 언어를 올바르게 작성하지 않았다는 신호입니다. 실수로 필수 구문을 누락하거나, 다른 언어의 구문을 혼용했을 가능성이 큽니다. 특히 개발자가 기술 스택을 넓혀가는 과정에서 이런 실수가 자주 발생합니다.
이 글에서는 Python에서 흔히 마주치는 SyntaxError의 대표적인 유형을 예제 코드와 함께 살펴보고, 각각의 해결 방법을 알아보겠습니다.
자주 발생하는 SyntaxError와 해결 방법
1. 딕셔너리(Dictionary) 오류
먼저 아래 코드에서 구문 오류가 발생한 이유를 찾아보세요.
student_gpas = {
'Mary': 3.0,
'Tim': 2.5
'John': 4.0
}
print(f'Mary has a {student_gpas["Mary"]} GPA.')
# SyntaxError: invalid syntax 반환
"2.5라는 키-값 쌍 뒤에 쉼표가 빠졌다"고 답했다면 정답입니다. 딕셔너리는 JavaScript의 객체처럼 각 키-값 쌍 뒤에 쉼표를 붙여야 하며, 마지막 키-값 쌍만 예외입니다.
위 오류의 해결 방법은 다음과 같습니다.
student_gpas = {
'Mary': 3.0,
'Tim': 2.5,
'John': 4.0
}
print(f'Mary has a {student_gpas["Mary"]} GPA.')
# Mary has a 3.0 GPA. 출력
2. 따옴표(Quotes) 충돌 오류
다음으로 아래 코드에서 구문 오류가 발생한 이유를 찾아보세요.
print('Mary's teacher stated that she has a 3.0 GPA.')
# SyntaxError: invalid syntax 반환
"문자열을 감싼 따옴표와 같은 종류의 따옴표를 문자열 내부에서 사용했다"고 답했다면 정답입니다. Python에서 따옴표로 인한 구문 오류를 피하는 방법은 크게 두 가지가 있습니다.
방법 1: 큰따옴표로 문자열 감싸기
print("Mary's teacher stated that she has a 3.0 GPA.")
방법 2: 백슬래시(\)로 따옴표 이스케이프 처리하기
print('Mary\'s teacher stated that she has a 3.0 GPA.')
참고: 한 설문 조사에 따르면 부트캠프 참가자의 81%가 수료 후 기술 분야 취업 전망에 대해 더 큰 자신감을 느꼈다고 답했습니다. 또한 부트캠프 수료생 평균적으로 부트캠프 시작부터 첫 직장을 찾을 때까지 6개월 미만의 기간 만에 커리어 전환에 성공했습니다.
3. 구버전 Python에서 새로운 구문 사용
작성한 구문이 현재 사용 중인 Python 버전과 호환되는지 반드시 확인해야 합니다. 예를 들어, Python 3.6 미만 버전에서는 f-string을 인식하지 못하므로 해당 구문을 실행하면 잘못된 구문 오류가 발생합니다. 이 경우 개발자는 Python 버전을 업그레이드하거나, 현재 버전에 맞는 호환 가능한 구문으로 코드를 수정해야 합니다.
student_gpas = {
'Mary': 3.0,
'Tim': 2.5,
'John': 4.0
}
print(f'Mary has a {student_gpas["Mary"]} GPA.')
# 구버전 Python에서는 SyntaxError: invalid syntax 반환
4. Python 키워드의 부적절한 사용
Python 키워드를 부적절하게 사용하고 있는지 판단하는 가장 좋은 방법은 각 키워드가 무엇이며 어떤 용도로 쓰이는지 정확히 아는 것입니다. not, yield 등 주요 키워드의 사용법과 위치 인수·키워드 인수 관련 오류 해결법을 담은 참고 자료를 함께 살펴보는 것도 도움이 됩니다.
마지막으로 아래 코드에서 구문 오류가 발생한 이유를 찾아보세요.
continue = True print(continue) # SyntaxError: invalid syntax 반환
"Python 키워드에 값을 할당하고 있기 때문"이라고 답했다면 정답입니다. continue는 루프의 다음 반복으로 건너뛸 때 사용되는 Python의 예약 키워드이므로 변수 이름으로 사용할 수 없습니다. 위 코드를 수정하려면 키워드가 아닌 일반 변수 이름에 불린 값 True를 할당하면 됩니다.
on = True print(on) # True 출력