Дійсні та недійсні імена та угоди щодо імен для ідентифікаторів (наприклад, імен змінних) у Python

Бізнес

У Python ідентифікатори (імена змінних, функцій, класів тощо) потрібно визначити відповідно до правил. Імена, які не відповідають правилам, не можуть використовуватися як ідентифікатори і призведуть до помилки.

Наведена нижче інформація.

  • Символи, які можна і не можна використовувати в ідентифікаторах (іменах)
    • Символи ASCII
    • Символ Unicode
      • нормалізація (наприклад, з математики)
  • Перевірте, чи є рядок дійсним ідентифікатором: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

Однак зверніть увагу, що підкреслення на початку може мати особливе значення.

Символ Unicode

Починаючи з Python 3, символи Unicode також можна використовувати.

変数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 є восьмим, і він описує «Посібник зі стилю для Python Code», тобто посібник зі стилю для Python.

Згадуються також конвенції про іменування.

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

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

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

Copied title and URL