假设我有一个返回多个元素一个Python函数,例如myfoo0()
Python列表解包,这是昂贵的吗?它效率低下吗?
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
我的问题是如何做上面的代码(具有myfoo1
体内的的fit
条目的命名)进行比较(从性能角度)到这一个不同的组件):
[a, b, c] = myfoo0();
out = myfoo2(a)
其中
def myfoo2(a):
return(doSomething(a))
特别地,是与元组在函数内部拆包溶液招致显著额外费用(例如,在复制方面)?
你并没有在任何地方制作深层拷贝。这里的任何副本都很浅。但在这种情况下,这是一个有争议的问题,因为你永远不会有多于一层的列表(或其他对象)嵌套,在这种情况下,深度和浅度副本是等价的。如果您有一个列表清单,并且这两个级别的所有列表都被复制,则可以使用深层复制的示例。浅拷贝只会复制顶层列表,并且共享嵌套列表。 –
这是一样的。 – BadZen
好的,删除了我所误解的深层副本的含义。我的问题是:第一个构造效率低下 - 我为(IMHO)增加了清晰度而招致成本? – user189035