다른 프로그래밍 언어와 마찬가지로 파이썬(Python)에도 미리 정의된 예약어, 즉 키워드(keyword)가 존재합니다. 키워드는 언어 문법상 특별한 의미를 지니며, 명령이나 제어 구조 등으로 사용됩니다. 따라서 키워드는 변수 이름이나 식별자로 사용할 수 없습니다.
이 글에서는 주어진 문자열이 파이썬에서 유효한 키워드인지 확인하는 방법을 알아보겠습니다.
keyword 모듈 임포트하기
문자열이 키워드인지 확인하려면 먼저 파이썬 표준 라이브러리에 포함된 keyword 모듈을 임포트해야 합니다. 별도의 설치 과정 없이 바로 사용할 수 있습니다.
import keyword
iskeyword() 함수로 키워드 여부 확인하기
keyword 모듈에는 iskeyword() 함수가 포함되어 있습니다. 이 함수에 문자열을 인자로 전달하면 해당 문자열이 유효한 키워드일 경우 True, 그렇지 않으면 False를 반환합니다.
아래 예제에서는 단어 목록을 순회하면서 각 단어가 키워드인지 판별하고, 키워드와 일반 단어(비키워드)로 분리하여 출력합니다.
예제 코드
import keyword
str_list = ['for', 'TP', 'python', 'del', 'Mango', 'assert', 'yield',
'if', 'Lion', 'as', 'Snake', 'box', 'return', 'try',
'loop', 'eye', 'global', 'while', 'update', 'is']
keyword_list = []
non_keyword_list = []
for item in str_list:
if keyword.iskeyword(item):
keyword_list.append(item)
else:
non_keyword_list.append(item)
print("Keywords: " + str(keyword_list))
print("\nNon Keywords: " + str(non_keyword_list))실행 결과
Keywords: ['for', 'del', 'assert', 'yield', 'if', 'as', 'return', 'try', 'global', 'while'] Non Keywords: ['TP', 'python', 'Mango', 'Lion', 'Snake', 'box', 'loop', 'eye', 'update']
실행 결과를 보면 'for', 'del', 'assert' 등은 파이썬 키워드로 분류되고, 'python', 'Mango', 'Snake' 같은 단어는 키워드가 아니므로 비키워드 목록에 담기는 것을 확인할 수 있습니다. 참고로 iskeyword() 함수는 대소문자를 구분하므로 'For'처럼 첫 글자만 대문자로 바꾸면 키워드로 인정되지 않습니다.
kwlist로 전체 키워드 목록 가져오기
keyword 모듈은 현재 파이썬 버전에서 사용되는 모든 키워드를 리스트 형태로 제공하는 kwlist 속성도 가지고 있습니다. 이를 활용하면 파이썬의 전체 예약어 목록을 한눈에 확인할 수 있습니다.
예제 코드
import keyword
print("All Keywords:")
print(keyword.kwlist)실행 결과
All Keywords: ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
이처럼 keyword 모듈을 활용하면 특정 문자열이 파이썬 예약어인지 손쉽게 검사할 수 있으며, 동적으로 변수명을 생성하거나 사용자 입력값을 검증해야 하는 상황에서 매우 유용하게 활용할 수 있습니다.