使用 *args 解压 return 函数参数
unpack return function arguments with *args
正在寻找有关如何使用 *args 在其他函数中正确解压缩 return 参数的指导?这是代码;
#!/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()
的方法,但没有成功。我在尝试解压缩时做错了什么?
func2 接受多个参数,而您在代码中只指定了一个
您可以通过打印所有 args
轻松查看是否。您还可以看到,它无法打印 args[1]
而不是 args[0]
,因为您已将一个参数传递给该函数。
你没有调用 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')
>>>
正在寻找有关如何使用 *args 在其他函数中正确解压缩 return 参数的指导?这是代码;
#!/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()
的方法,但没有成功。我在尝试解压缩时做错了什么?
func2 接受多个参数,而您在代码中只指定了一个
您可以通过打印所有 args
轻松查看是否。您还可以看到,它无法打印 args[1]
而不是 args[0]
,因为您已将一个参数传递给该函数。
你没有调用 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')
>>>