Khi bạn có nhiều đầu ra từ một hàm và bạn không muốn gọi nó nhiều lần, tôi nghĩ cách rõ ràng nhất để chọn kết quả sẽ là:
results = fct()
a,b = [results[i] for i in list_of_index]
Như một ví dụ hoạt động tối thiểu, cũng chứng minh rằng hàm chỉ được gọi một lần:
def fct(a):
b=a*2
c=a+2
d=a+b
e=b*2
f=a*a
print("fct called")
return[a,b,c,d,e,f]
results=fct(3)
> fct called
x,y = [results[i] for i in [1,4]]
Và các giá trị như mong đợi:
results
> [3,6,5,9,12,9]
x
> 6
y
> 12
Để thuận tiện, các chỉ mục danh sách Python cũng có thể được sử dụng:
x,y = [results[i] for i in [0,-2]]
Trả về: a = 3 và b = 12
~
làm cú pháp để bỏ qua một biến trả về cụ thể