将数组/列表传入Python函数

66 投票
6 回答
418634 浏览
提问于 2025-04-16 05:41

我最近在研究如何把数组,或者说列表(Python里通常这么叫),传递给一个函数。

我看到有关于使用 *args 的说法,比如:

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

但是我不确定这样做对不对。感觉什么都不太能按我想的那样工作。我以前在PHP中传递数组到函数里很简单,现在搞得我有点迷糊。还有,我似乎不能这样做:

def someFunc(*args, someString)

因为会报错。

我觉得我自己搞得一团糟,想找个人帮我理清楚这个问题。

6 个回答

8

你不需要用星号来接受一个列表。

只要在定义的时候给这个参数起个名字,然后像下面这样传入一个列表就可以了:

def takes_list(a_list):
    for item in a_list:
         print item
37

你可以像处理其他类型一样传递列表:

l = [1,2,3]

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


stuff(l)

这段代码会打印出列表 l。要记住,列表是以引用的方式传递的,而不是深拷贝。

95

当你用这种语法定义函数时:

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

你是在告诉它,你希望能传入不定数量的参数。如果你想传入一个列表(在其他编程语言中叫数组),你可以这样做:

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

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

撰写回答