콘텐츠로 건너뛰기
Home » 소프트 키워드(Soft Keyword)

소프트 키워드(Soft Keyword)

키워드는 예약어(reserved word)라고도 하며, 문법적으로 특별한 의미를 지니기 때문에 변수나 함수의 이름으로 사용하는 것이 제한되는 단어들을 말합니다. 예를 들어 if, for, while 과 같은 단어들은 특정한 구문을 표현하기 위해 사용하는 단어들이고, 이들 단어는 변수명으로 사용하려는 경우, Syntax Error가 발생하면서 정상적으로 처리되지 않습니다.

키워드들은 보통 아주 일상적인 단어로 표현되는 경우가 많으며, 어떤 경우에는 흔히 자기도 모르게 변수명으로 사용하려고 시도하는 경우가 생길 수 있습니다. 게다가 언어의 역사가 진행되는 과정에서 새로운 기능이 추가되고 이를 지원하기 위한 문법이 추가될 수 있습니다. 이 경우에는 새로운 예약어가 추가되는 경우도 있습니다. 파이썬은 초창기부터 예약어를 극히 제한적으로 사용했습니다. 심지어 파이썬 2에서는 참/거짓을 구분할 때 사용하는 True, False 도 예약어가 아니었습니다.

파이썬 3.11에서는 match 구문이 추가되면서 새로운 키워드인 match, case, _ 가 추가되었습니다. 그런데 당장 match 만해도 키워드로 지정할 수가 없습니다. 정규식 모듈인 re 모듈 내에도 match() 함수가 있기 때문에, 키워드로 추가하는 순간 하위 버전에서의 호환성이 무너지게 됩니다.

따라서, 이러한 신규 예약어들은 특정한 상황 및 특정한 형태의 문법에서만 예약어로서 기능하게끔 설계됩니다. 이러한 단어들을 소프트키워드라고 부릅니다. 방금 언급했듯이 파이썬 3.11에서 match, case, _ 와 같은 단어들이 소프트 키워드로 추가되었고, 이 단어들은 match 구문(statement)내에서만 키워드처럼 작동합니다.

소프트 키워드를 예약어로 구분하는 것은 파서 단위에서 처리되며, 토크나이저는 이러한 기능을 사용하지 않습니다. 따라서 같은 코드에서 소프트 키워드와 같은 단어를 변수명으로 사용한다 하더라도 문제가 생기지 않기 때문에, 소프트키워드 추가 이전의 코드와 같이 사용하더라도 큰 문제는 발생하지 않습니다.

파이썬 3.12에서 타입 별칭 구문이 추가되었기 때문에, type 역시 type integers = list[int] 와 같은 식으로 사용한다면 이 때에는 예약어처럼 사용되게 됩니다. 그 외의 경우에는 type은 내장함수 type() (혹은 type은 그 자체로 type 이라는 클래스이기도 합니다.)을 가리키는 말입니다. (파이썬에서 내장 함수는 내장 라이브러리의 다른 함수들과 같이, 일반적인 함수 이름이며 실행 시간에 다른 함수를 가리키도록 바인딩을 덮어쓰는 것이 가능합니다.)

0 Comments

No Comment.