更新无限循环中使用的变量

时间:2013-04-01 19:29:39

标签: python infinite-loop raspberry-pi gpio

我正在使用Raspberry pi上的GPIO来驱动4位7段显示器。显示是多路复用的,并在while True:循环中运行。

我希望能够提示用户输入更新显示的新4位数字。我尝试过使用线程,但更新显示的线程无法识别更改的变量。

以下是我认为可行的示例:

number = "0000" #used in drive_display() but can be updated in prompt()

def drive_display():
  while True:
    changeDigit(number[0],Digit1)
    time.Sleep(0.006)
    changeDigit(number[1],Digit2)
    time.Sleep(0.006)
    changeDigit(number[2],Digit3)
    time.Sleep(0.006)
    changeDigit(number[3],Digit4)
    time.Sleep(0.006)

threading.Thread(target=drive_display).start()

def prompt():
  number = input("new 4 digit number: ") 
  prompt()

prompt()

1 个答案:

答案 0 :(得分:2)

你必须在线程函数中使用global才能工作:

def prompt():
  global number
  number = raw_input("new 4 digit number: ") 
  prompt()

来自文档:

  

如果没有global

,则无法分配全局变量