Не может понять, как имя группы определяется на основе имени чат-комнаты при создании чат-приложения с использованием каналов
self.room_group_name = "chat_%s" % self.room_name Это строка кода, которая определяет имя группы комнат из имени_комнаты в официальном руководстве на сайте каналов. (https://channels.readthedocs.io/en/stable/tutorial/part_2.html)
Я не могу понять, что означает "chat_%s" % self.room_name". Буду признателен за любое объяснение того, что именно делает эта часть кода.
"chat_%s" % self.room_name
- это выражение для форматирования строк. %s
- это заменяемый параметр, который заполняется значениями, переданными после %.
В Python3 доступны другие методы форматирования, которые примерно эквивалентны:
f"chat_{self.room_name}"
f"chat_{self.room_name}"
- это f-строка. f-строка - это сокращение для функции формата строки:
"chat_{room_name}".format( room_name = self.room_name )
По сути, синтаксис форматирования, о котором вы спрашиваете, следующий:
"template" % (param1, param2...)
Параметры в шаблоне заменяются по порядку. По сути, это старый устаревший способ форматирования строк с переменной интерполяцией.
Это форматирование строки [Python-doc]. Он выдаст строку, в которой %s
заменит str(…)
на self.room_name
. Если self.room_name
таким образом 'foo'
, то будет получена строка 'chat_foo'
.
В настоящее время чаще используются f-строки [pep-498], поэтому тогда работают с;
self.room_group_name = f'chat_{self.room_name}'