Грамматика для оператора del:
del_stmt: 'del' (expr|star_expr) (',' (expr|star_expr))* [',']
Позволяет удалить помеченные выражения. Таким образом, парсер не возражает против этого, даже если это вызовет SyntaxError: can't use starred expression here
во время выполнения:
>>> ast.parse("del *a")
<_ast.Module at 0xcafef00d>
>>> ast.dump(compile('del *a', filename='wtf.py', mode='single', flags=ast.PyCF_ONLY_AST))
"Interactive(body=[Delete(targets=[Starred(value=Name(id='a', ctx=Del()), ctx=Del())])])"
Есть ли какое-то использование, которое я пропускаю, которое может иметь помеченную цель удаления? Не должно ли быть вместо этого более простая грамматика:
del_stmt: 'del' expr (',' expr)* [',']
Почему грамматика позволяет удалять помеченные выражения?