使用* args解包返回函数参数

时间:2016-07-14 21:08:27

标签: python function args

寻找关于如何使用* args在其他函数中正确解包返回参数的一些指导?这是代码;

 #!/usr/bin/python

def func1():

    test1 = 'hello'
    test2 = 'hey'

    return test1, test2


def func2(*args):

    print args[0]
    print args[1]

func2(func1)

我收到的错误消息;

    <function func1 at 0x7fde3229a938>
Traceback (most recent call last):
  File "args_test.py", line 19, in <module>
    func2(func1)
  File "args_test.py", line 17, in func2
    print args[1]
IndexError: tuple index out of range

我尝试了一些像args()但没有成功的事情。在尝试打开包装时我做错了什么?

2 个答案:

答案 0 :(得分:4)

你没有调用func,所以你的func2实际上是一个参数,这是一个函数对象。将您的代码更改为:func2(*func1())

# While you're at it, also unpack the results so hello and hey are interpreted as 2 separate string arguments, and not a single tuple argument 
>>> func2(*func1())
hello
hey

>>> func2(func1)
<function func1 at 0x11548AF0>

Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    func2(func1)
  File "<pyshell#19>", line 4, in func2
    print args[1]
IndexError: tuple index out of range

供参考:

>>> func1
<function func1 at 0x11548AF0>
>>> func1()
('hello', 'hey')
>>> 

答案 1 :(得分:-1)

func2接受多个参数,并且在代码中只指定了一个参数 您可以通过打印所有args轻松查看。您还可以看到,它无法打印args[1]而不是args[0],因为您已将一个参数传递给该函数。