파이썬에서는 규칙에 따라 식별자(변수, 함수, 클래스 등의 이름)를 정의해야 합니다. 규칙을 따르지 않는 이름은 식별자로 사용할 수 없으며 오류가 발생합니다.
다음 정보가 여기에 제공됩니다.
- 식별자(이름)에 사용할 수 있는 문자와 사용할 수 없는 문자
- 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을 따르는 것이 좋습니다.