我有以下代码将*参数用作函数。
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
的更好方法,因此我不必每次都调用append
和del
。
我尝试了一个简单的例子:
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处找到了解决方案,这就是我所需要的。
答案 0 :(得分:2)
至少在相当新的Python 3版本中,您应该能够做到这一点:
inputs = [fill(input) for input in input_shapes]
def bench(num_runs):
handle_type(*inputs, num_runs)