解包参数列表:
def send(*data):
for datum in data:
ser.write(datum)
vs 首先发送列表:
def send(data):
for datum in data:
ser.write(datum)
解包参数列表:
def send(*data):
for datum in data:
ser.write(datum)
vs 首先发送列表:
def send(data):
for datum in data:
ser.write(datum)
如果它简化了 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)
回显您的函数签名。