Ошибка использования end = «» в вызове функции

1

Следующий код работает для отправки сообщения пользователю:

mud.send_message(id, rooms[self.current_room]["desc"])

В одной части кода игры я не хочу начинать с новой строки, поэтому я стараюсь:

mud.send_message(id, rooms[self.current_room]["desc"], end=" ")
mud.send_message(id, "This starts on the same line as the code above.")

Это, конечно, вызывает ошибку, что третья переменная (end = "") не приветствуется здесь. Как запустить второе сообщение в одной строке?

Дополнительная информация при необходимости:

def send_message(self, to, message):
    self._attempt_send(to, message+"\n\r")
  • 0
    Что ж, если вы хотите иметь end параметр, почему бы вам не добавить его в функцию send_message и использовать его для управления добавлением \n\r или нет?
  • 0
    Является send_message функция send_message частью кода, который вы написали сами? Если нет, где вы взяли код и что написано в документации ?
Показать ещё 3 комментария
Теги:
python-3.x

2 ответа

2
Лучший ответ

end параметр, который вы имеете в виду, специфичен для встроенной функции print; другие вещи, которые вывод текста не обязательно будет поддерживать его.

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

Если send_message находится в чужой библиотеке, тогда в общем случае вы должны сначала проверить документацию для этой библиотеки и посмотреть, что рекомендуется.

Однако для случая, столь же простого, как этот, очевидная вещь - просто подготовить одну строку текста для вывода, так что будет сделан только один вызов send_message.

Вы можете сделать это, например, с форматированием строки:

# Python 3.6 and later
mud.send_message(id, f'{rooms[self.current_room]["desc"]} This is on the same line.')
# Earlier 3.x, before the introduction of f-strings
mud.send_message(id, '{} This is on the same line.'.format(rooms[self.current_room]["desc"]))
  • 0
    Прекрасно, это был синтаксис, который я не мог понять. Смотрите выше о том, почему я не хочу добавлять его в каждое сообщение, то есть основной код send_message.
-2

Поскольку send_message всегда send_message '\n\r' с любым _attempt_send message, вы можете вызвать _attempt_send:

mud._attempt_send(id, rooms[self.current_room]["desc"] + " ")
  • 0
    -1: хотя это будет работать, ведущий _ в имени этого метода строго указывает на то, что он не предназначен для непосредственного вызова. (Кажется вероятным, что OP пошел изучать код сторонней библиотеки.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню