Ідентифікатори та ключові слова
Оновлено: 28.04.2023
Ідентифікатори (також згадувані як імена) описуються наступними лексичними визначеннями.
Синтаксис ідентифікаторів у Python базується на стандартному додатку Unicode UAX-31 із уточненнями та змінами, як визначено нижче; див. також PEP 3131 для отримання додаткової інформації.
У діапазоні ASCII (U+0001..U+007F) дійсні символи для ідентифікаторів такі ж, як і в Python 2.x: великі та малі літери від A до Z, символ підкреслення _ і, за винятком першого символу, цифри 0 до 9.
Python 3.0 представляє додаткові символи поза межами діапазону ASCII (див. PEP 3131). Для цих символів у класифікації використовується версія бази даних символів Unicode, яка включена в модуль unicodedata.
Довжина ідентифікаторів необмежена. Справа знакова.
identifier ::= xid_start xid_continue*
id_start ::= <all characters in general categories Lu, Ll, Lt, Lm, Lo, Nl, the underscore, and characters with the Other_ID_Start property>
id_continue ::= <all characters in id_start, plus characters in the categories Mn, Mc, Nd, Pc and others with the Other_ID_Continue property>
xid_start ::= <all characters in id_start whose NFKC normalization is in "id_start xid_continue*">
xid_continue ::= <all characters in id_continue whose NFKC normalization is in "id_continue*">
Зазначені вище коди категорій Unicode означають:
Lu - великі літери Ll - малі літери Lt - заголовні літери Lm - літери-модифікатори Lo - інші букви Nl - цифри літер Mn - непробільні знаки Mc - знаки поєднання інтервалів Nd - десяткові числа Pc - розділові знаки сполучника Other_ID_Start - explicit list of characters in PropList.txt to support backwards compatibility Other_ID_Continue - так само
Під час синтаксичного аналізу всі ідентифікатори перетворюються в нормальну форму NFKC; порівняння ідентифікаторів базується на NFKC.
A non-normative HTML file listing all valid identifier characters for Unicode 14.0.0 can be found at https://www.unicode.org/Public/14.0.0/ucd/DerivedCoreProperties.txt
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield