Python Glossary English

все Python 3устарело в 3.9astпонятие

ast.Param

переменные

Устаревший с 3.9 контекст выражения из Python 2, где им помечались параметры функции; парсер Python 3 его не создаёт.

Синтаксис

ast.Param()

В Python 3 параметры — отдельные узлы arg без поля ctx, поэтому Param в дереве из ast.parse не встретится никогда, а подсунутый вручную compile() отвергнет. Класс ещё импортируется, и код, проверяющий isinstance(ctx, ast.Param), молча ничего не находит; параметры ищут по ast.arg. Объявлен к удалению в будущих версиях вместе с Suite, AugLoad и AugStore.

Примеры

import ast
tree = ast.parse('def f(a, b): pass')
params = [n.arg for n in ast.walk(tree) if isinstance(n, ast.arg)]
print(params)  # → ['a', 'b']
print(any(isinstance(getattr(n, 'ctx', None), ast.Param) for n in ast.walk(tree)))  # → False
import ast
m = ast.parse('x = 1')
m.body[0].targets[0].ctx = ast.Param()
try:
    compile(m, '<ast>', 'exec')
except TypeError as e:
    print(type(e).__name__)  # → TypeError

См. также

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