3

解包参数列表:

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

vs 首先发送列表:

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

1 回答 1

4

如果它简化了 API,否则您将始终必须传入一个列表:

send(something, otherthing)

相对:

send([something, otherthing])

通常的参数取自不同的位置;例如something,并且otherthing比已经收集在一个列表中的变量更可能是单独的变量。

Python 3.xprint()函数和该函数正是这样做的os.path.join()。在调用 API 之前,您很少将所有打印参数或要加入的路径元素组合在一个列表中。

比较:

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

对比

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

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

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

send(*params)

回显您的函数签名。

于 2012-12-18T18:29:48.743 回答