可变/任意数量的*arg或**kwargsstr.格式()在Python中

2024-04-25 17:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个socket客户机,需要定义一个向服务器发送以下类型消息的函数:sometext,[name_1],[name_2],...,[name_n]。实际上这个消息更复杂,但为了举例说明,我简化了它。在

其中:

  • ...-表示姓名2和姓氏之间的其余姓名(以逗号分隔)
  • 每次可能有任意数量的名字

我知道有*args和{},但是在这种情况下如何正确地使用它们与{}?我需要这样的东西:

def send_names(*args):
    print('sometext,{*args},'.format(*args)) # as an example we just print

我知道这段代码行不通,因为{*args}在这里是非法的。 当我事先知道*args的数量时,代码就可以工作了,比如这里:

^{pr2}$

我错过了什么?在


Tags: 函数代码name消息类型数量客户机定义
3条回答

我认为您应该避免使用.format,而只需要使用', '.join参数。您没有提到任何需要.format问题中的字符串的具体原因。就像@Selcuk的解决方案

您可以加入*args来完成您想要的:

def send_names(*args):
    print('sometext, {0}'.format(', '.join(args)))

send_names('message1', 'message2', 'message3')

结果:

^{pr2}$

您不能使用*args**kwargs应用于可变数量的插槽,不。您必须根据长度自行创建插槽:

','.join(['{}'] * len(args)).format(*args)

然后可以根据需要将结果插值到另一个模板中。上面的方法适用于格式化槽通常接受的任何类型的参数。在

演示:

^{pr2}$

相关问题 更多 >