все Python 3astпонятие
ast.Mod
операторы
Маркер бинарного оператора % в дереве ast: лежит в поле BinOp.op и AugAssign.op и полей не имеет.
Синтаксис
ast.Mod()
Дерево не различает остаток от деления и старое форматирование строк: '10 % 3' и "'%s' % name" — одинаковые BinOp(Mod). Чтобы найти форматирование через %, проверяйте, что left — Constant со строкой. Знак % внутри f-строки или литерала узла не создаёт.
Примеры
import ast
for src in ['10 % 3', "'%s!' % name"]:
b = ast.parse(src, mode='eval').body
print(type(b.op).__name__, isinstance(b.left.value, str) if isinstance(b.left, ast.Constant) else '-')
# → Mod False / Mod True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности