我有四個函式,每個函式都回傳一個串列作為結果。我希望我依次呼叫的這些函式中的任何一個都帶有一個串列,而不是查看其他函式。謝謝您的幫助。
def main(self):
print(self.df_list)
funcs = [(Calculate.free_two_kdv(self.df_list)),(Calculate.free_kdv(self.df_list)),(Calculate.zero_kdv(Calculate.find_largest_duplicated_value,self.df_list)),(Calculate.zero_with_other_kdv(Calculate.find_largest_duplicated_value,self.df_list))]
for func in funcs:
try:
func()
except ValueError:
break
簡而言之,我根本不希望它轉到其他功能,以帶來結果為準。
uj5u.com熱心網友回復:
您正在立即呼叫您的函式并將結果存盤在串列中。定義一個進行所需函式呼叫的新函式。
def main(self):
print(self.df_list)
funcs = [lambda: Calculate.free_two_kdv(self.df_list),
lambda: Calculate.free_kdv(self.df_list),
lambda: Calculate.zero_kdv(Calculate.find_largest_duplicated_value, self.df_list),
lambda: Calculate.zero_with_other_kdv(Calculate.find_largest_duplicated_value, self.df_list)
]
for func in funcs:
try:
return func()
except ValueError:
pass
不清楚您是否想要Calculate.find_largest_duplciated_value作為第一個函式的引數,或者您是否想要函陣列合(即f(g, x)vs f(g(x))。如果您想要組合,它是
funcs = [lambda: Calculate.free_two_kdv(self.df_list),
lambda: Calculate.free_kdv(self.df_list),
lambda: Calculate.zero_kdv(Calculate.find_largest_duplicated_value(self.df_list)),
lambda: Calculate.zero_with_other_kdv(Calculate.find_largest_duplicated_value(self.df_list))
]
uj5u.com熱心網友回復:
假設 funcs 中的 func 回傳一個串列或 None :
for func in funcs:
if func(): break
for func in funcs:
flist = func()
if flist: break
第二個接收函式的回傳值以供進一步作業。try..except 在這種情況下比簡單的布爾條件具有更高的性能成本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/388323.html
