Для строк триггеры по модулю Интерполяция строк старого стиля . Правым операндом может быть скаляр, кортеж или словарь.
Документация гласит:
Если правый аргумент - словарь (или другой тип отображения), тогда форматы в строке должны включать ключ сопоставления в скобках в этот словарь, вставленный сразу после символа '%'
. Клавиша сопоставления выбирает значение для форматирования из сопоставления. Например:
>>> print('%(language)s has %(number)03d quote types.' %
... {'language': "Python", "number": 2})
Python has 002 quote types.
В вашем конкретном примере нет форматов, поэтому ничего не интерполируется. Добавление правильного ключа интерполяции, например world = 'hello %(hello)'
или world = 'hello %(hello2)'
, иллюстрирует его работу. Попытка world = 'hello %(hello3)'
приведет к KeyError
.