Python 使用*args解包返回函数参数
想了解一些关于如何使用*args在其他函数中正确解包返回参数的指导吗?这就是代码Python 使用*args解包返回函数参数,python,function,args,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 0x7fd
#!/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_test.py”,第19行,在
职能2(职能1)
文件“args_test.py”,第17行,在func2中
打印参数[1]
索引器错误:元组索引超出范围
我尝试了一些方法,如
args()
,但没有成功。尝试解包时我做错了什么?func2接受多个参数,而您在代码中只指定了一个参数通过打印所有
参数
,您可以很容易地看到是否存在错误。您还可以看到,它无法打印args[1]
而不是args[0]
,因为您向该函数传递了一个参数。您没有调用func
,因此您的func2
实际上得到了一个参数,它是一个函数对象。将代码更改为:func2(*func1())
#同时,也要解压结果,以便将hello和hey解释为两个单独的字符串参数,而不是一个元组参数
>>>func2(*func1())
你好
嘿
>>>职能2(职能1)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
职能2(职能1)
文件“”,第4行,在func2中
打印参数[1]
索引器错误:元组索引超出范围
供参考:
>>> func1
<function func1 at 0x11548AF0>
>>> func1()
('hello', 'hey')
>>>
>>func1
>>>func1()
(‘你好’、‘嘿’)
>>>
试试func2(func1())
你的意思是func2(*func1())
@dipakhandranp:)@Bahrom不,只是没有*
,比如:func2(func1())
如果不起作用,你仍然会给它一个元组,它将解释为唯一的参数。func2(*func1())
:你能解释一下这句话的确切含义吗<代码>*在这上面*
是解包运算符,它将func1()
的元组输出解包为两个参数。假设func1
返回(1,2)
如果您只执行func2(func1())
,您实际上正在调用func2((1,2))
(注意只有一个参数,恰好是两个元素的元组)。调用func2(*(1,2))
将该元组解压为两个参数,结果是func2(1,2)
。哦,谢谢。像这样的权利:>>f2(f1())
((2,4),)
>f2(*f1())
(2,4)
是的,在一种情况下你有f((2,4),)
,在未打包的版本中你有f(2,4)
,谢谢你的解释。
>>> func1
<function func1 at 0x11548AF0>
>>> func1()
('hello', 'hey')
>>>