将数组/列表传递给Python

时间:2010-10-18 16:08:48

标签: python parameter-passing argument-unpacking

我一直在寻找将Python调用它们的数组或列表传递给函数。

我读过有关使用* args的内容,例如:

def someFunc(*args)
    for x in args
        print x

但不确定这是对还是错。似乎没有什么能像我想的那样工作。我以前能够轻松地将数组传递给PHP函数,这让我感到困惑。我似乎无法做到这一点:

def someFunc(*args, someString)

因为它引发了一个错误。

我想我只是让自己完全糊涂了,并且正在寻找有人为我清理它。

5 个答案:

答案 0 :(得分:53)

使用以下语法定义函数时:

def someFunc(*args)
    for x in args
        print x

你告诉它你期望有不同数量的参数。如果你想传入一个List(来自其他语言的数组)你会做这样的事情:

def someFunc(myList = [], *args)
    for x in myList:
        print x

然后你可以用它来调用它:

items = [1,2,3,4,5]

someFunc(items)

您需要在变量参数之前定义命名参数,在关键字参数之前定义变量参数。你也可以这样:

def someFunc(arg1, arg2, arg3, *args, **kwargs)
    for x in args
        print x

这需要至少三个参数,并支持其他参数和关键字参数的可变数量。

答案 1 :(得分:21)

您可以像其他类型一样传递列表:

l = [1,2,3]

def stuff(a):
   for x in a:
      print a


stuff(l)

这将打印列表l。请记住,列表作为引用传递而不是作为深层副本传递。

答案 2 :(得分:8)

Python列表(不仅仅是数组,因为它们的大小可以在运行中更改)是普通的Python对象,可以作为任何变量传递给函数。 *语法用于解压缩列表,这可能不是您现在想要做的事情。

答案 3 :(得分:6)

您无需使用星号来接受列表。

只需在定义中为参数指定一个名称,然后传入类似

的列表
def takes_list(a_list):
    for item in a_list:
         print item

答案 4 :(得分:1)

def sumlist(items=[]):
    sum = 0
    for i in items:
        sum += i

    return sum

t=sumlist([2,4,8,1])
print(t)