将数组/列表传入Python函数
我最近在研究如何把数组,或者说列表(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
这要求至少传入三个参数,并且支持其他参数和关键字参数的可变数量。