2013-07-28 242 views
6

進出口新Python和編程,但不能Python的全局變量似乎明白了爲什麼這個功能不會更新全局變量沒有更新

global weight 
weight = 'value' 
def GetLiveWeight(): 
    SetPort() 
    while interupt == False: 
     port.write(requestChar2) 
     liveRaw = port.read(9) 
     liveRaw += port.read(port.inWaiting()) 
     time.sleep(0.2) 
     weight = liveRaw.translate(None, string.letters) 
    return weight 

我也試過這種

weight = 'value' 
def GetLiveWeight(): 
    global weight 
    SetPort() 
    while interupt == False: 
     port.write(requestChar2) 
     liveRaw = port.read(9) 
     liveRaw += port.read(port.inWaiting()) 
     time.sleep(0.2) 
     weight = liveRaw.translate(None, string.letters) 
    return weight 

try: 
    threading.Thread(target = GetLiveWeight).start() 
    print liveWeight 
except: 
    print "Error: unable to start thread" 

回答

12

您需要聲明那weight是全球裏面GetLiveWeight,不在它之外。

weight = 'value' 
def GetLiveWeight(): 
    global weight 

global statement告訴Python的GetLiveWeight功能的範圍內,weight指的是全局變量weight,而不是一些新的局部變量weight

+1

謝謝我已經嘗試過,但我似乎無法獲得改變重量變量的功能,它似乎總是保持設置值? – Rhys

+1

你確定'interupt == False'(通常寫成'not interupt')的條件是否爲真?換句話說,你確定'while循環'內的代碼是否正在執行? – unutbu

+0

是的,我在while循環中添加了一個打印輸出變量重量,它工作正常。這可能與我稱爲它的方式有關'嘗試: threading.Thread(target = GetLiveWeight).start() print liveWeight 除外: 打印「錯誤:無法啓動線程」' – Rhys