不止一个元组* args

时间:2016-01-14 05:24:03

标签: python

我知道你可以在Python中使用*args来允许元组或参数。但是怎么可能有两个这样的。与*args*args1一样?

这可能吗?

3 个答案:

答案 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 传递时,您可以做的是连接两个argslisttuple)。例如:

+

函数定义只能有一个>>> 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变量中结束。