我知道你可以在Python中使用*args
来允许元组或参数。但是怎么可能有两个这样的。与*args
和*args1
一样?
这可能吗?
答案 0 :(得分:2)
我认为你的意思是功能参数,然后不是不可能的。元组*args
的原因可以是任何长度为0或更多的参数。如果您有另一个*args2
,您将如何确定哪些参数属于*args
哪个参数属于*args2
?但是,您可以包含**kwargs
,它是关键字参数的字典对象。例如:
def my_function(x, *args):
...
你可以弄明白*args
的args是什么。但是,在
def my_function2(x, *args, *args):
...
您无法确定哪些参数进入args1
哪个参数进入*args2
。但是,对于
def my_function3(x, *args, **kwargs):
...
可以区分属于*args
的参数和属于**kwargs
的参数,因为属于**kwargs
的参数采用{{1}的形式}}
答案 1 :(得分:2)
在函数定义中不能有多个相同类型的可变参数(例如def func(*args, *args1)
,但是,in Python 3.5,您可以在调用函数时传递该表单中的参数。 / p>
Python 3.4:
>>> print(*range(3), *range(3))
File "<stdin>", line 1
print(*range(3), *range(3))
^
SyntaxError: invalid syntax
Python 3.5:
>>> print(*range(3), *range(3))
0 1 2 0 1 2
答案 2 :(得分:0)
调用函数时无法传递file1.txt
********************
number of line = 6
number of true = 3
number of false = 3
********************
line 1 T
line 3 T
line 4 T
file2.txt
********************
number of line = 6
number of true = 4
number of false = 2
********************
line 1 T
line 2 T
line 4 T
line 6 T
两次(直到Python 3.5}
*args
但是,当您使用>>> fun(*a, *b)
File "<stdin>", line 1
fun(*a, *b)
^
SyntaxError: invalid syntax
传递时,您可以做的是连接两个args
(list
或tuple
)。例如:
+
函数定义只能有一个>>> def fun(*args):
... print(args)
...
>>> a = [1,2,3,4,5]
>>> b = [6,7,8,9]
>>>
>>> fun(*a)
(1, 2, 3, 4, 5)
>>> fun(*b)
(6, 7, 8, 9)
>>> fun(*a+b)
(1, 2, 3, 4, 5, 6, 7, 8, 9)
定义,所有传递的位置参数将按照它们传递的顺序在*args
变量中结束。