Итак, я вижу как минимум 2 случая, когда идентификатор не связан с переменной.
- Перед процессом имени привязки у нас есть только идентификаторы, но не переменные. Действительно, результатом токенизации является просто поток токенов. Это когда идентификаторы появляются, но ссылок и переменных здесь нет.
- После процесса привязки имени некоторые идентификаторы не привязываются к объектам. По крайней мере, ключевые слова не привязаны к объектам (у них нет типа и значения). В документах говорится, что ключевые слова — это специальные идентификаторы, которые «нельзя использовать в качестве обычных идентификаторов». Однако они по-прежнему являются идентификаторами — по крайней мере, токенизатор Python присваивает им категорию «ИМЯ»: если мы создадим файл script.py со следующим кодом:
тогда результат команды python -m tokenize script.py будет следующим (обратите внимание, что токены if, True и a получил ту же категорию «NAME», хотя только токен a является «обычным идентификатором», который позже будет привязан к переменной a, токенам if и True — ключевые слова):
Код: Выделить всё
if True: a = 3Код: Выделить всё
1,0-1,2: NAME 'if' 1,3-1,7: NAME 'True' 1,7-1,8: OP ':' 1,9-1,10: NAME 'a' 1,11-1,12: OP '=' 1,13-1,14: NUMBER '3' 1,14-1,15: NEWLINE '\n' 2,0-2,0: ENDMARKER ''
Подробнее здесь: https://stackoverflow.com/questions/790 ... a-variable