我可以在多行上分配函数的结果吗?Python



假设我有一个返回大量变量的函数:

def func():
return var_a, var_b, var_c, var_d, var_e, var_f, var_g, var_h, var_i,

使用此功能会产生很长的行

var_a, var_b, var_c, var_d, var_e, var_f, var_g, var_h, var_i = func()

理想情况下,我想使用线路断路器,例如

a = var 
+ var 
+ var 
+ var 
+ var

然而,我认为对于函数(即拆包元组(的结果来说,这是不可能的。有办法做到这一点吗?或者我应该找到另一种方法来返回更少的变量吗?你还有其他风格的建议吗?

您可以将变量包装在圆括号中

(var_a,
var_b,
var_c,
var_d,
var_e,
var_f,
var_g,
var_h,
var_i) = func()

如果您愿意,您可以接受函数的输出作为元组

ans = func()

我不知道这个值到底是多少,但是您可以考虑使用一个数据类来使用返回的值,这样更容易访问数据

class data():
def __init__(self,var_a, var_b, var_c, var_d, var_e, var_f, var_g, var_h, var_i):
self.var_a = var_a
self.var_b = var_b
self.var_c = var_c
self.var_d = var_d
self.var_e = var_e
self.var_f = var_f
self.var_g = var_g
self.var_h = var_h
self.var_i = var_i
def func():
return data(var_a, var_b, var_c, var_d, var_e, var_f, var_g, var_h, var_i)
a=func()
print(a.var_a)

只是补充,您还可以使用多个元素并使用它来忽略其中一些元素:

*ignore, i = func() # Ignore all elements except the last one
a, *ignore = func() # Ignore all elements except the first one
a, *ignore, i = func() # Ignore all elements except the first and last one

最新更新