将*参数与常规参数混合

时间:2019-03-31 00:23:31

标签: python

我有以下代码将*参数用作函数。

inputs = [fill(input) for input in input_shapes]
# num_runs is an integer 
def bench(num_runs):
    inputs.append(num_runs) # can I remove this?
    handle_type(*inputs)
    del inputs[-1] # can I remove this? 

我想知道一种处理*inputs的更好方法,因此我不必每次都调用appenddel

我尝试了一个简单的例子:

inputs = [1, 2, 3]
inputs2 = [1, 2] 
def Test(a, b, c):
     print (a, b, c)


Test(*inputs) # works 
Test(*inputs2, 3) # SyntaxError: only named arguments may follow *expression

我在Unpacking arguments: only named arguments may follow *expression处找到了解决方案,这就是我所需要的。

1 个答案:

答案 0 :(得分:2)

至少在相当新的Python 3版本中,您应该能够做到这一点:

inputs = [fill(input) for input in input_shapes]
def bench(num_runs):
    handle_type(*inputs, num_runs)