Skip to main content
 首页 » 编程设计

python之从python中的while循环内部返回值

2025年05月04日15freeliver54

我不知道这是一个简单的问题还是不可能的问题,但我在上面找不到任何东西,所以我想我会问的。

是否可以在循环仍在运行时从 while 循环返回值?基本上我想要做的是让一个向量在 while 循环中不断更新,但能够在不停止 while 循环的情况下在被询问时返回值。这可能吗?我是否只需要分解程序并将 while 循环放在一个单独的线程中,还是可以在一个函数中完成?

此外,我更喜欢一种计算量不大(显然)的方法,并且一种与限速 while 循环兼容的方法,因为这种方法肯定是限速的。

同样,如果这是一个愚蠢的问题,请告诉我,我会删除它,但我找不到相关文档。

我试图用以下代码实现:

def update(self, x_motion, y_motion, z_motion): 
        self.x_pos += self.x_veloc 
        self.y_pos += self.y_veloc 
        self.z_pos += self.z_veloc 
        self.x_veloc += self.x_accel 
        self.y_veloc += self.y_accel 
        self.z_veloc += self.z_accel 
        self.x_accel = x_motion[2] 
        self.y_accel = y_motion[2] 
        self.z_accel = z_motion[2] 
while True: 
self.update(x_motion, y_motion, z_motion) 
 
print vector.x_accel 

至少在这些方面是这样的。重要的是这些在 while 循环之外返回,以便 while 循环在后台运行,但它只在被询问或类似情况时给出结果。

请您参考如下方法:

改为创建生成器。

def triangle(): 
  res = 0 
  inc = 1 
  while True: 
    res += inc 
    inc += 1 
    yield res 
 
t = triangle() 
print next(t) 
print next(t) 
print next(t) 
print next(t) 

编辑:

或者也许是协程。

def summer(): 
  res = 0 
  inc = 0 
  while True: 
    res += inc 
    inc = (yield res) 
 
s = summer() 
print s.send(None) 
print s.send(3) 
print s.send(5) 
print s.send(2) 
print s.send(4)