在函数调用中使用end =“”时出错

时间:2018-09-22 15:59:18

标签: python python-3.x

以下代码可向用户发送消息:

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")

2 个答案:

答案 0 :(得分: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"]))

答案 1 :(得分:-1)

由于send_message始终将'\n\r'连接到您传递给它的任何message上,因此您可以调用_attempt_send来代替

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