假设我有一个返回多个元素的Python函数,例如myfoo0()
def myfoo0():
return([1, 2, 3])
并且用作:
fit = myfoo0();
现在,考虑一个使用fit
的某些条目作为输入的函数。例如:
def myfoo1(fit):
[a, b, c] = fit
return(doSomething(a))
现在,如果我把它写成:
,我觉得更容易阅读fit = myfoo0();
out = myfoo1(fit)
(例如,我有许多函数myfoo1
,...,myfoon
,每个函数使用fit
的不同组件
我的问题是上面的代码(fit
的正文中myfoo1
的条目的命名)如何比较(从性能的角度)到这个代码:
[a, b, c] = myfoo0();
out = myfoo2(a)
其中
def myfoo2(a):
return(doSomething(a))
特别是,在函数内部使用元组解包的解决方案会产生很大的额外成本(例如在复制方面)吗?
答案 0 :(得分:2)
这里有一些误解:
fit = myfoo0();
不会复制任何内容。 fit
仅仅是对myfoo0()
返回的列表的引用,而不是副本。
[a, b, c] = myfoo0();
也不会创建新列表。另一方面,你有3个变量分别引用第一,第二和第三个列表成员。
out = myfoo1(fit)
与myfoo1(a)
不同。第一个调用使用作为第一个参数传递的列表调用myfoo1,第二个调用调用myfoo1,第一个列表成员作为第一个参数传递。