假設我有一個返回多個元素一個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