Как использовать самодокументирующийся спецификатор равенства (отладки) с str.format ()?
Представлен Python 3.8 =
спецификатор в f-строках (см. эту проблему и запрос на вытягивание).
Это позволяет быстро представить как значение, так и имя переменной:
from math import pi as π
f'{π=}'
# 'π=3.141592653589793'
Я хотел бы использовать эту функцию в заранее определенной строке с str.format()
:
'{π=}'.format(π=π)
Однако возникает исключение:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'π='
Есть ли способ заставить это работать (например, специальным методом dunder)?
Почему это может быть полезно?
- можно иметь программный шаблон для нескольких значений одной и той же переменной (в цикле)
- напротив, струны f должны быть жестко запрограммированы; подумайте об интернационализации
- можно ссылаться на константы, определенные в модуле, в его строке документации (
module.__doc__.format(**vars(module)
);- обходной путь: определить переменную f-строки в конце модуля, перезаписать
module.__doc__
во время выполнения.
- обходной путь: определить переменную f-строки в конце модуля, перезаписать