我正在尝试学习如何使用* args并想出了这个。
alist =[5,2,6,1,2]
blist =[1,5,2,4,1]
def argstest(var1, var2, *args):
print "var1", var1
print "var2", var2
temp = list(args)[0]
for i in temp:
if i > 3:
print i
argstest(5, 8, alist, blist)
>>>>> var1 5
>>>>> var2 8
>>>>> 5
>>>>>>6
>>>>>>5
>>>>>>4
虽然我看到这可能是非常有用的,但我首先关注的是
temp = list(args)[0]
是将*args
转换为列表的一种非常奇怪的方式,第二种方法是这不是使用*args
的标准方式。
我的问题是将*args
转换为列表的标准方法是什么?
另外,这是编写以这种方式执行任务的函数的正确方法吗?
答案 0 :(得分:1)
在前两个参数之后迭代每个参数:
alist =[5,2,6,1,2]
blist =[1,5,2,4,1]
def argstest(*args):
for i in args[2:]
for j in i:
if j > 3:
print j
argstest(5, 8, alist, blist)
你会看到* args允许你传入任意数量的参数。现在它将多个列表展平为一个。
答案 1 :(得分:0)
你不将args转换为列表... args是一个tupl,第一个元素是你的列表。阿格斯已经是个傻瓜了。只需将列表提供给函数即可。你不需要使用*。
答案 2 :(得分:0)
'*'将所有未命名的参数组合成元组,例如* args。您还应该查看** args(编写args只是一种约定),它将所有命名参数转换为字典。这是向初学者到中级程序员之间跨越的一步。当你进行OOP并使用继承时,这两件事将被广泛使用。
答案 3 :(得分:0)
您不需要使用temp变量只需遍历args并打印出每个列表。
alist =[5,2,6,1,2]
blist =[1,5,2,4,1]
def argstest(var1, var2, *args):
print "var1", var1
print "var2", var2
for i in args:
if i > 3:
print i
argstest(5, 8, alist, blist)