Что ((value_in_dictionary) по модулю [%] (словарь)) делает в Python? - PullRequest
1 голос
/ 03 мая 2020

Я хочу понять, что делает value_in_dictionary % dictionary.

Я пытался

values = {
    'hello':'world',
    'hello2':'world2',
}
value = 'world'
print(value % values)

Это печатает

world

1 Ответ

4 голосов
/ 03 мая 2020

Для строк триггеры по модулю Интерполяция строк старого стиля . Правым операндом может быть скаляр, кортеж или словарь.

Документация гласит:

Если правый аргумент - словарь (или другой тип отображения), тогда форматы в строке должны включать ключ сопоставления в скобках в этот словарь, вставленный сразу после символа '%'. Клавиша сопоставления выбирает значение для форматирования из сопоставления. Например:

>>> 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.

...