Python Glossary English

Python 3.6+astпонятие

ast.JoinedStr

литералы

Узел f-строки: values — список кусков, где постоянный текст — Constant, а каждое поле {…} — FormattedValue.

Синтаксис

ast.JoinedStr(values)

f-строка без единого поля, f'abc', всё равно даёт JoinedStr, а не Constant — проверка «это строковая константа?» её пропустит. Соседние литералы сливаются при разборе: 'a' f'{b}' — один JoinedStr, и исходного деления на два литерала в дереве нет. Спецификатор формата после двоеточия — тоже JoinedStr, вложенный в FormattedValue.format_spec.

Примеры

import ast
node = ast.parse('f"x={x!r:>5}"', mode='eval').body
print(type(node).__name__)  # → JoinedStr
print([type(v).__name__ for v in node.values])  # → ['Constant', 'FormattedValue']
fv = node.values[1]
print(fv.value.id, chr(fv.conversion), fv.format_spec.values[0].value)  # → x r >5
import ast
print(type(ast.parse('f"abc"', mode='eval').body).__name__)  # → JoinedStr
print(len(ast.parse('"a" f"{b}"', mode='eval').body.values))  # → 2

См. также

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