Python 3.5+astпонятие
ast.AsyncFunctionDef
async
Узел определения корутины async def: те же поля, что у FunctionDef, — имя, аргументы, тело, декораторы, аннотация возврата.
Синтаксис
ast.AsyncFunctionDef(name, args, body, decorator_list, returns=None, type_comment=None, type_params)
Это отдельный класс, а не подкласс FunctionDef: isinstance(node, ast.FunctionDef) для async def даёт False, и NodeVisitor с одним visit_FunctionDef пропускает все корутины. Обычно заводят visit_AsyncFunctionDef = visit_FunctionDef. Наличие await внутри тела на тип узла не влияет — его определяет только слово async.
Примеры
import ast
node = ast.parse('async def fetch(url):\n return url').body[0]
print(type(node).__name__, node.name, node.args.args[0].arg) # → AsyncFunctionDef fetch url
print(isinstance(node, ast.FunctionDef)) # → False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности