Как использовать самодокументирующийся спецификатор равенства (отладки) с 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__ во время выполнения.

0 ответов

Другие вопросы по тегам