我只想了解为什么当我们将*args
作为参数传递给list
可以完成同样的工作时为什么使用*args
。在某些情况下,我们确实需要list
,其中以list =[1,2,3,4,5,6,7]
def method1(args):
for i in args:
print(i*2)
method1(list)
作为参数将无法执行该操作。
list =[1,2,3,4,5,6,7]
def method1(*args):
for i in args:
print(i*2)
method1(*list)
if (isEdit && !itemToEdit) {
return <StepSpinner />;
}
...
...
return <MyComponent itemId={itemToEdit.id} />;
我没有发现任何差异。如果我错了,请纠正我。
答案 0 :(得分:1)
区别在于您可以在第二种情况下传递任意数量的参数,而在第一种情况下它将引发错误。
案例1 :
lst = [1,2,3,4,5,6,7]
a = 1
b = 2
def method1(args):
for i in args:
print(i*2)
method1(lst, a, b)
...失败,出现'TypeError: method1() takes 1 positional argument but 3 were given'
。
案例2(i):
lst = [1,2,3,4,5,6,7]
a = 1
def method1(*args):
for i in args:
print(i*2)
method1(lst, a)
...有效。
案例2(ii):
lst = [1,2,3,4,5,6,7]
a = 1
b = 2
def method1(*args):
for i in args:
print(i*2)
method1(lst, a, b)
...工作正常,您可以传递任意数量的参数。
答案 1 :(得分:1)
def method1(args):
print(args)
method1(5) it will print 5
method1() method1() missing 1 required positional argument: 'args'
method1(2,6) TypeError: method1() takes 1 positional argument but 2 were given
为了避免这种情况,我们使用
def method1(*args):
print(args)
method1(1, 2, '3')
(1, 2, '3') print this
因此* args在我们不知道需要传递多少参数时非常有用。