变量在def中没有变化

时间:2015-03-21 19:18:08

标签: python

当我运行这个程序时(它应该每3秒打开和关闭一次输出),但是“enable”值保持为0并且在def be()运行期间不会变为1。如果您只是尝试progremyou将只看到它写“开”。 请帮助,因为我是python的初学者。

import threading
import os
import smbus
from threading import Timer
from time import sleep

bus = smbus.SMBus(1) # Rev 2 Pi uses 1

DEVICE = 0x20 # Device address (A0-A2)
IODIRA = 0x00 # Pin direction register
OLATA  = 0x14 # Register for outputs
GPIOA  = 0x12 # Register for inputs

bus.write_byte_data(DEVICE,OLATA,0)
enable = 0
beki = 1
be = 0
ki=0

def be():
     print "on"
     bus.write_byte_data(DEVICE,OLATA,1)
     sleep(0.2)
     enable=1
def ki():
     print "off"
     bus.write_byte_data(DEVICE,OLATA,0)
     sleep(0.1)
     enable=0

while True:

  if(enable==0):
     on = threading.Timer(3, be)
     on.start()
  if(enable==1):
     off = threading.Timer(3, ki)
     off.start()
  sleep(0.01)

1 个答案:

答案 0 :(得分:1)

您正在更改函数中的局部变量。要更改全局变量,您需要使用global关键字,例如:

def be():
    global enable
    # ...
    enable = 1