为什么解包比传递列表更受欢迎

时间:2012-12-18 18:26:01

标签: python parameters arguments parameter-passing iterable-unpacking

解压缩参数列表:

def send(*data):
    for datum in data:
        ser.write(datum)

首先在列表中发送:

def send(data):
    for datum in data:
        ser.write(datum)

1 个答案:

答案 0 :(得分:3)

如果它简化了API的情况,否则你总是必须传入一个列表:

send(something, otherthing)

send([something, otherthing])

您的常用参数来自不同的位置;例如somethingotherthing更有可能是单独的变量,而不是已在一个列表中收集的变量。

Python 3.x print()函数与os.path.join()函数完全相同。在调用API之前,很少将所有打印参数或路径元素连接组合在一个列表中。

比较

os.path.join(rootdirectory, relativepath, filename)
print('Debug information:', localvariable)

VS

os.path.join([rootdirectory, relativepath, filename])
print(['Debug information:', localvariable])

如果.join()print()只接受一个位置参数(列表),则API的用户会发现自己键入[]括号再一次。

通过接受可变数量的位置参数,您可以为API的用户节省必须为函数调用创建列表的麻烦。在极少数情况下,参数已经被收集到列表中,他们可以使用*params调用约定:

send(*params)

回显您的功能签名。