Python의 식별자(예: 변수 이름)에 대한 유효 및 유효하지 않은 이름 및 명명 규칙

사업

파이썬에서는 규칙에 따라 식별자(변수, 함수, 클래스 등의 이름)를 정의해야 합니다. 규칙을 따르지 않는 이름은 식별자로 사용할 수 없으며 오류가 발생합니다.

다음 정보가 여기에 제공됩니다.

  • 식별자(이름)에 사용할 수 있는 문자와 사용할 수 없는 문자
    • ASCII 문자
    • 유니코드 문자
      • 정규화(예: 수학)
  • 문자열이 유효한 식별자인지 확인하십시오.isidentifier()
  • 식별자(이름)로 사용할 수 없는 단어(예약어)
  • 식별자(이름)로 사용해서는 안 되는 단어
  • PEP8의 명명 규칙

다음 설명은 Python 3에서 제공되며 Python 2에서는 다를 수 있습니다.

식별자(이름)에 사용할 수 있는 문자와 사용할 수 없는 문자

식별자(이름)로 사용할 수 있는 문자와 사용할 수 없는 문자를 나타냅니다.

또한 작성해야 할 내용이 많지만 기본적으로 기억해야 할 사항은 다음과 같습니다.

  • 대문자와 소문자, 숫자, 밑줄을 사용하십시오.
  • 첫 번째(첫 번째) 문자는 숫자가 될 수 없습니다.

ASCII 문자

식별자(이름)로 사용할 수 있는 ASCII 문자는 대문자와 소문자(A~Z,a~z), 숫자(0~9), 밑줄(_)입니다. 알파벳은 대소문자를 구분합니다.

AbcDef_123 = 100
print(AbcDef_123)
# 100

밑줄 이외의 기호는 사용할 수 없습니다.

# AbcDef-123 = 100
# SyntaxError: can't assign to operator

또한 처음(첫 글자)에는 숫자를 사용할 수 없습니다.

# 1_abc = 100
# SyntaxError: invalid token

밑줄은 처음에 사용할 수도 있습니다.

_abc = 100
print(_abc)
# 100

그러나 시작 부분의 밑줄은 특별한 의미를 가질 수 있습니다.

유니코드 문자

Python 3부터 유니코드 문자도 사용할 수 있습니다.

変数1 = 100
print(変数1)
# 100

모든 유니코드 문자를 사용할 수 있는 것은 아니며 유니코드 범주에 따라 일부는 사용할 수 없습니다. 예를 들어 구두점, 픽토그램 등의 기호는 사용할 수 없습니다.

# 変数。 = 100
# SyntaxError: invalid character in identifier

# ☺ = 100
# SyntaxError: invalid character in identifier

사용할 수 있는 유니코드 범주 코드에 대한 공식 문서를 참조하십시오.

많은 경우에 유니코드 문자도 사용할 수 있기 때문에(오류 없이) 한자 등을 사용하는 이점이 없습니다.

정규화(예: 수학)

유니코드 문자는 해석을 위해 정규화된 형식 NFKC로 변환됩니다. 예를 들어, 전각 알파벳은 반각 알파벳(ASCII 문자)으로 변환됩니다.

소스 코드가 다른 디스플레이를 표시하더라도 동일한 개체로 간주되어 덮어쓰게 됩니다.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

문자열이 유효한 식별자인지 확인하십시오: isidentifier()

문자열이 식별자로 유효한지 여부는 문자열 메서드 isidentifier()로 확인할 수 있습니다.

식별자로 유효한 경우 true를 반환하고 유효하지 않은 경우 false를 반환합니다.

print('AbcDef_123'.isidentifier())
# True

print('AbcDef-123'.isidentifier())
# False

print('変数1'.isidentifier())
# True

print('☺'.isidentifier())
# False

식별자(이름)로 사용할 수 없는 단어(예약어)

식별자(이름)로 유효한 문자열이라도 식별자로 사용할 수 없는 단어(예약어)가 있습니다.

예약어는 식별자로 유효한 문자열이므로 isidentifier()는 true를 반환하지만 식별자로 사용하면 오류가 발생합니다.

print('None'.isidentifier())
# True

# None = 100
# SyntaxError: can't assign to keyword

예약어 목록을 얻고 문자열이 예약어인지 확인하려면 표준 라이브러리의 키워드 모듈을 사용하십시오.

식별자(이름)로 사용해서는 안 되는 단어

예를 들어, 파이썬의 내장 함수의 이름은 식별자로 사용될 수 있으므로 새로운 값을 변수로 할당할 수 있습니다.

예를 들어, len()은 목록의 요소 수 또는 문자열의 문자 수를 반환하는 내장 함수입니다.

print(len)
# <built-in function len>

print(len('abc'))
# 3

이 이름 len에 새 값을 할당하면 원래 기능을 덮어쓰고 사용할 수 없게 됩니다. 새 값을 할당할 때 오류나 경고가 인쇄되지 않습니다.

print(len('abc'))
# 3

len = 100
print(len)
# 100

# print(len('abc'))
# TypeError: 'int' object is not callable

또 다른 일반적인 실수는 list = [0, 1, 2]를 사용하여 list()를 사용할 수 없게 만드는 것입니다. 조심하세요.

PEP8의 명명 규칙

PEP는 Python Enhancement Proposal의 약자로 Python의 새로운 기능과 기타 측면을 설명하는 문서입니다.

PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment.
PEP 1 — PEP Purpose and Guidelines | Python.org

PEP8은 여덟 번째로, “파이썬 코드용 스타일 가이드”, 즉 파이썬용 스타일 가이드를 설명합니다.

명명 규칙도 언급됩니다.

자세한 내용은 위의 링크를 참조하세요. 하지만 예를 들어 다음과 같은 작문 스타일을 권장합니다.

  • 기준 치수
    • lowercase_underscore
    • 소문자 + 밑줄
  • 패키지
    • lowercase
    • 모두 소문자
  • 클래스, 예외
    • CapitalizedWords(CamelCase)
    • 밑줄 없이 단어의 첫 글자를 대문자로
  • 함수, 변수 및 메서드
    • lowercase_underscore
    • 소문자 + 밑줄
  • 일정한
    • ALL_CAPS
    • 대문자 + 밑줄

그러나 조직에 고유한 명명 규칙이 없는 경우 PEP8을 따르는 것이 좋습니다.