LainyZine: 프로그래머 가이드 🐣

[Python] 변수 네이밍 규칙

변수는 특정값에 이름을 붙여서 사용할 수 있는 기능으로 프로그래밍 언어에서 가장 핵심적인 기능이자 문법 중 하나입니다. 파이썬에서 역시 변수는 가장 기본이 되는 기능입니다. 파이썬에서는 변수에 값을 대입할 때 타입을 설정하는 등의 과정이 필수적으로 필요하지 않습니다만, 반드시 변수 네이밍 규칙에 따라 이름을 지어야합니다. 이 글에서는 파이썬의 변수 네이밍 규칙에 대해서 소개합니다.

변수 네이밍 규칙

파이썬에서 변수 이름은 다음 규칙을 따릅니다.

예를 들어 아래 이름들은 모두 파이썬에서 변수명으로 사용할 수 있습니다.

number
i
_given_name
myString
person000
person999
Fruits

반면에 아래와 같은 이름들은 변수명으로 사용할 수 없습니다.

500 # 변수명은 숫자로 시작할 수 없습니다
given-name # 변수명에서 -를 사용할 수 없습니다
1person # 변수명은 숫자로 시작할 수 없습니다
!apple # 변수명에서 !를 사용할 수 없습니다
else # else는 파이썬 문법 예약어입니다

변수명은 가급적이면 영어 소문자를 사용하고, 축약어보다는 누구나 알아볼 수 있도록 명확한 단어를 사용하는 것을 권장합니다.

또한 이름 상의 제약이 있는 것은 아닙니디만, __(언더바 두 개)로 시작하는 변수명은 파이썬에서 특별한 의미를 가진 변수명으로 사용되곤 합니다.

파이썬의 예약어

앞서 소개한 것처럼 예약어는 변수명으로 사용할 수 없습니다. 예를 들어 조건문에서 사용하는 else를 변수명으로 사용하면 SyntaxError가 발생합니다.

>>> else = 'Hello, world!'
Input In [1]
   else = "123"
   ^
SyntaxError: invalid syntax

예약어는 대부분 파이썬 문법으로 사용되는 단어들입니다. 하지만 영어에서 보면 매우 평범한 단어라서 가끔 실수를 하는 경우도 발생하니 주의가 필요합니다. 현재 사용하는 버전의 파이썬 예약어는 help("keywords") 코드를 실행해서 확인할 수 있습니다.

>>> help('keywords')

아래는 파이썬 3.9.13 버전의 모든 예약어 목록입니다.

False               break               for                 not
None                class               from                or
True                continue            global              pass
__peg_parser__      def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield

아래는 파이썬 2.7.16 버전의 모든 예약어 목록입니다.

and                 elif                if                  print
as                  else                import              raise
assert              except              in                  return
break               exec                is                  try
class               finally             lambda              while
continue            for                 not                 with
def                 from                or                  yield
del                 global              pass

파이썬 2와 파이썬 3 약간의 차이가 있으니 비교해보시기 바랍니다. 또한 같은 메이저 버전에서도 차이가 있을 수 있습니다. 예를 들어 3.7부터 async와 await 예약어로 추가되었으니 주의가 필요합니다.

키워드 목록을 파이썬에서 리스트로 사용하고 싶은 경우, 아래와 같이 keyword 라이브러리를 사용할 수 있습니다.

>>> import keyword
>>> keyword.kwlist

참고 문서

파이썬에서 공식적으로 권장하는 네이밍 원칙에 대해서는 다음 글들을 참고해주세요.

LainyZine은 쿠팡 파트너스 활동에 따른 수수료를 제공받습니다.