Python Glossary English

Python 3.0+astпонятие

ast.Nonlocal

функции и классы

Узел инструкции nonlocal: names — список имён строками.

Синтаксис

ast.Nonlocal(names)

Имена в names — простые строки, а не узлы Name, поэтому ast.walk по Name их не находит. ast.parse проверяет только синтаксис: nonlocal на уровне модуля даёт вполне корректное дерево, а ошибка «not allowed at module level» появляется лишь в compile(). То же верно для return и yield вне функции.

Примеры

import ast
tree = ast.parse('nonlocal a, b')
print(type(tree.body[0]).__name__, tree.body[0].names)  # → Nonlocal ['a', 'b']
try:
    compile(tree, '<ast>', 'exec')
except SyntaxError as e:
    print(e.msg)  # → nonlocal declaration not allowed at module level

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности