我的问题是我在列表中有值。我想分离这些值并将它们作为单独的参数发送。
我的代码是:
def egg():
return "egg"
def egg2(arg1, arg2):
print arg1
print arg2
argList = ["egg1", "egg2"]
arg = ', '.join(argList)
egg2(arg.split())
这行代码(egg2(arg.split()))
不起作用,但我想知道是否可以调用一些将值与列表分开的内置函数,因此稍后我们可以将它们作为两个不同的参数发送。与egg2(argList[0], argList[1])
类似,但要动态完成,这样我就不必显式列出参数。
答案 0 :(得分:51)
>>> argList = ["egg1", "egg2"]
>>> egg2(*argList)
egg1
egg2
调用函数时,可以使用* args(arguments)和** kwargs(用于关键字参数)。 请查看this blog如何正确使用它。
答案 1 :(得分:9)
argument unpacking有一种特殊的语法:
egg2(*argList)
答案 2 :(得分:1)
可能有更好的方法,但你可以这样做:
argList = ["egg1", "egg2"]
(a, b) = tuple(argList)
egg2(a, b)
答案 3 :(得分:0)
arg.split()
不会按您希望的方式拆分列表,因为默认分隔符与您的列表不匹配:
In [3]: arg
Out[3]: 'egg1, egg2'
In [4]: arg.split()
Out[4]: ['egg1,', 'egg2']
In [5]: arg.split(', ')
Out[5]: ['egg1', 'egg2']
来自the docs(强调补充):
如果未指定sep或
None
,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,结果将不包含空字符串如果字符串具有前导或尾随空格,则为开头或结尾。