我一直在寻找将Python调用它们的数组或列表传递给函数。
我读过有关使用* args的内容,例如:
def someFunc(*args)
for x in args
print x
但不确定这是对还是错。似乎没有什么能像我想的那样工作。我以前能够轻松地将数组传递给PHP函数,这让我感到困惑。我似乎无法做到这一点:
def someFunc(*args, someString)
因为它引发了一个错误。
我想我只是让自己完全糊涂了,并且正在寻找有人为我清理它。
答案 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)