Python全局变量不更新

Rhy*_*hys 9 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
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个

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"
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 19

需要声明的是weight是全球性的内部 GetLiveWeight,而不是外面.

weight = 'value'
def GetLiveWeight():
    global weight
Run Code Online (Sandbox Code Playgroud)

global语句告诉Python,在GetLiveWeight函数范围内,weight引用全局变量weight,而不是一些新的局部变量weight.

  • 谢谢我已经尝试过了,但我似乎仍然无法获得更改权重变量的函数,它似乎始终保持设置为值? (2认同)
  • `try`-suite中的print语句在*之前被执行*另一个线程修改`weight`. (2认同)