当python处于无限循环时改变值

时间:2012-01-24 03:08:17

标签: python

这可以在python中完成吗? 首先打印无限循环并在循环之间更改值。

x = 5
while ( true ):
  print x
x = 3 # regain control of the interpreter and set to new value

预期产出:

5
5
5
......
3
3
3

4 个答案:

答案 0 :(得分:4)

不,你编写的代码不起作用。非终止循环后的语句永远不会被执行。

尝试以下方法:

x = 5
while True:
  if (some-condition):
    x = 3
  print x

或者,使用threading,并在第二个帖子中更改x的值:

def changeX():
  global x
  x = 3

x = 5
import threading
threading.Timer(3, changeX).start()  # executes changeX after 3 seconds in a second thread

while True:
  print x

答案 1 :(得分:1)

目前还不清楚你需要做什么,但你可以抓住“ctrl-c”事件并输入一个新值:

x = 5
while True:
    try:
        print x
    except KeyboardInterrupt:
        x = raw_input("Enter new value: ").strip()

答案 2 :(得分:1)

我认为这个问题的最佳答案是使用线程,但是有一种方法可以将代码注入到正在运行的解释器线程中:

https://fedorahosted.org/pyrasite/

答案 3 :(得分:0)

不完全是。你为什么要这样做?什么是根本问题?

"对"这样做的方法可能是改变while循环中的代码,偶尔实际检查你的条件,然后结束循环,如果它有时间结束它(例如,让一个线程继续观察控制台输入)

说到这一点,从技术上讲,你可以使用调试器(例如winpdb或内置pdb)附加到正在运行的程序,并将其弄乱。

但你可能想要做的是,如果我对你的潜在动机做出正确的猜测,尽管同时进行其他处理,仍会继续接受输入。

在这种情况下,您想学习如何在Python中使用线程。检查threading模块。