将函数 1 中元组的所有元素(来自 *args)传递到 python 中的函数 2(作为 *args)
Passing all elements of tuple in function 1 (from *args) into function 2 (as *args) in python
我正在编写一个函数来接受 *args 输入,评估数据,然后将所有输入传递给下一个适当的函数(对齐),同时接受 *args
*args 似乎是一个元组。我尝试了多种方法将元组的每个元素传递给下一个函数,最新的两种是:
for x in args:
align(*x)
和
for x in args:
align(args[0:len(args)])
你 "unpack them" 和 *args
。然后接收函数可以再次将它们整理成一个元组(或者不是!)。
这些例子应该能启发一些事情:
>>> def foo(*f_args):
... print('foo', type(f_args), len(f_args), f_args)
... bar(*f_args)
...
>>> def bar(*b_args):
... print('bar', type(b_args), len(b_args), b_args)
...
>>> foo('a', 'b', 'c')
('foo', <type 'tuple'>, 3, ('a', 'b', 'c'))
('bar', <type 'tuple'>, 3, ('a', 'b', 'c'))
现在,让我们重新定义 bar
并打破 argspec:
>>> def bar(arg1, arg2, arg3):
... print('bar redefined', arg1, arg2, arg3)
...
>>> foo('a', 'b', 'c')
('foo', <type 'tuple'>, 3, ('a', 'b', 'c'))
('bar redefined', 'a', 'b', 'c')
>>> foo('a', 'b')
('foo', <type 'tuple'>, 2, ('a', 'b'))
---> TypeError: bar() takes exactly 3 arguments (2 given)
我正在编写一个函数来接受 *args 输入,评估数据,然后将所有输入传递给下一个适当的函数(对齐),同时接受 *args
*args 似乎是一个元组。我尝试了多种方法将元组的每个元素传递给下一个函数,最新的两种是:
for x in args:
align(*x)
和
for x in args:
align(args[0:len(args)])
你 "unpack them" 和 *args
。然后接收函数可以再次将它们整理成一个元组(或者不是!)。
这些例子应该能启发一些事情:
>>> def foo(*f_args):
... print('foo', type(f_args), len(f_args), f_args)
... bar(*f_args)
...
>>> def bar(*b_args):
... print('bar', type(b_args), len(b_args), b_args)
...
>>> foo('a', 'b', 'c')
('foo', <type 'tuple'>, 3, ('a', 'b', 'c'))
('bar', <type 'tuple'>, 3, ('a', 'b', 'c'))
现在,让我们重新定义 bar
并打破 argspec:
>>> def bar(arg1, arg2, arg3):
... print('bar redefined', arg1, arg2, arg3)
...
>>> foo('a', 'b', 'c')
('foo', <type 'tuple'>, 3, ('a', 'b', 'c'))
('bar redefined', 'a', 'b', 'c')
>>> foo('a', 'b')
('foo', <type 'tuple'>, 2, ('a', 'b'))
---> TypeError: bar() takes exactly 3 arguments (2 given)