Python Glossary English

все 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Сообщить о неточности