Python 返回未打包的参数
是否可以返回未打包的参数?我所描绘的是Python 返回未打包的参数,python,Python,是否可以返回未打包的参数?我所描绘的是返回msg,*msg_args,它将返回一个元组,如(msg,msg_args[0],msg_args[1],msg_args[2])。这将允许我将它发送到另一个函数进行字符串插值 def add_to_message(msg, *msg_args): msg += " I am %s." msg_args = list(msg_args) msg_args.append("fine") return(msg, *msg_a
返回msg,*msg_args
,它将返回一个元组,如(msg,msg_args[0],msg_args[1],msg_args[2])
。这将允许我将它发送到另一个函数进行字符串插值
def add_to_message(msg, *msg_args):
msg += " I am %s."
msg_args = list(msg_args)
msg_args.append("fine")
return(msg, *msg_args)
def display_localized_message(msg, *msg_args):
"""Translate message, then interpolate and print it."""
print(msg % msg_args)
display_localized_message(
*add_to_message("Hi %s. How are %s?", "Peter", "you"))
所需结果:打印Hi-Peter。你好吗?我很好。
实际结果:
语法错误:只能将带星号的表达式用作赋值目标
。包含错误的行是返回消息,*msg_args
简单。只是不要用星号和参考号作为列表
def add_to_message(msg, *msg_args):
msg += " I am %s."
msg_args.append("fine")
return (msg,) + msg_args
*仅在方法定义中使用,以表明它将是所有其余参数的元组。在方法内部,引用不带星号的元组。它只是一个元组 在3.5之前的python版本中,只需使用它构造一个新元组:
def add_to_message(msg, *msg_args):
msg += " I am %s."
msg_args.append("fine")
return (msg,) + msg_args
在Python3.5中,您当前的语法很好。如果您没有将Python3.5+与一起使用,则无法将其解压缩为返回值的一部分。只需通过
元组
串联显式创建组合的元组
:
return (msg,) + msg_args
它返回一个
元组
,其中第二个元素是varargs元组
,而不是展开的版本。现在它是一个值和一个列表的元组
。仍然不是要求的。@ShadowRanger yeah没有仔细阅读。认为问题是由*msg args引用的。msg只需要添加(在使用单个元素将其变成一个元组之后),+
方法在Python 3.5中仍然有效,这只是为了澄清。实际上,在我第一次发布之后,我意识到代码使用的是列表(见编辑的问题),所以对我的代码有效的方法是返回[msg,]+msg_args
。但这正是我要找的。@JimK:仅供参考,对于单个元素list
literal,您不需要后面的逗号。这仅适用于tuple
s(区别于使用paren进行分组的情况)。