Допустимые и недопустимые имена и соглашения об именовании идентификаторов (например, имен переменных) в Python

Бизнес

В 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

Не все символы Unicode могут быть использованы, и в зависимости от категории Unicode некоторые из них не могут быть использованы. Например, нельзя использовать такие символы, как знаки препинания и пиктограммы.

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

# ☺ = 100
# SyntaxError: invalid character in identifier

Коды категорий Unicode, которые могут быть использованы, см. в официальной документации.

Во многих случаях нет никаких преимуществ в использовании китайских иероглифов и т.д., просто потому что символы Unicode также могут быть использованы (без ошибок).

нормализация (например, в математике)

Для интерпретации символы Unicode преобразуются в нормализованную форму 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

Чтобы получить список зарезервированных слов и проверить, является ли строка зарезервированным словом, используйте модуль ключевых слов стандартной библиотеки.

Слова, которые не следует использовать в качестве идентификаторов (имен)

Имена встроенных функций Python, например, могут использоваться как идентификаторы, поэтому вы можете присваивать им новые значения в качестве переменных.

Например, 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 — восьмой, он описывает «Style Guide for Python Code», то есть руководство по стилю для Python.

Также упоминаются соглашения об именовании.

Более подробную информацию см. по ссылке выше, но для примера рекомендуется следующий стиль написания.

  • Модуль
    • lowercase_underscore
    • Нижний регистр + подчеркивание
  • Пакет
    • lowercase
    • все строчные буквы
  • Классы, исключения
    • CapitalizedWords(CamelCase)
    • Пишите первую букву слова с заглавной буквы, без подчеркивания
  • Функции, переменные и методы
    • lowercase_underscore
    • Нижний регистр + подчеркивание
  • постоянная
    • ALL_CAPS
    • Заглавные буквы + подчеркивание

Однако если в вашей организации нет собственных соглашений об именовании, рекомендуется следовать PEP8.

Copied title and URL