18

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"
4

1 に答える 1

28

weightがグローバル あると宣言する必要がありGetLiveWeightます。

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

このglobalステートメントGetLiveWeightは、関数のスコープ内で、新しいローカル変数ではなくweight、グローバル変数を参照することをPython に伝えます。weightweight

于 2013-07-28T19:10:22.750 に答える