* args vs list作为Python中的参数

时间:2019-08-18 09:26:30

标签: python python-3.x args

我只想了解为什么当我们将*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} />;

我没有发现任何差异。如果我错了,请纠正我。

2 个答案:

答案 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在我们不知道需要传递多少参数时非常有用。

相关问题