当前位置: 首页 > 面试题库 >

Python全局变量未更新

彭星津
2023-03-14
问题内容

我是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"

问题答案:

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

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

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



 类似资料:
  • 问题内容: 我了解Python中局部变量和全局变量的概念,但是我只是有一个问题,为什么下面的代码中会出现错误?Python逐行执行代码,因此在读取第5行之前,它不知道a是局部变量。Python尝试执行第5行后,会回退一行并将其标记为错误吗? 问题答案: 设置和测试 为了分析您的问题,让我们创建两个独立的测试函数来复制您的问题: 版画。因此,调用此函数不是问题,而是在下一个函数上: 我们收到一个错误

  • 问题内容: 此代码为何起作用: 但这给出了“分配前引用的局部变量’var’”错误: 问题答案: 因为在第一个代码中,您已经创建了一个局部变量并使用了它的值,而在第二个代码中,您正在使用局部变量,而没有对其进行定义。 因此,如果要使第二个功能正常工作,则需要声明:- 在使用该功能之前。 而在此代码中: 更新 :- 但是,按照@Tim的注释,您不应在函数内部使用变量。最好在使用变量之前先定义变量,然后

  • 问题内容: 我正在Django中寻找一种简单但推荐的方式,将变量仅存储在内存中。当Apache重新启动或Django开发服务器重新启动时,该变量重置为0。更具体地说,我想计算在每个模型实例(数据库记录)上执行特定操作的次数,但是出于性能原因,我不这样做想要将这些计数存储在数据库中。我不在乎服务器重启后计数是否消失。但是,只要服务器启动,我就希望这些计数在Django Shell和Web界面之间保持

  • 我使用的是swing,有一个函数(CreateAndShowGUI())可以监听上、左、右键的按下 现在,当我运行程序并按下任意键(向上、向左、向右、向下)时,我可以看到按下的键变量被设置为True。但当我试图在main中访问相同的内容时,按下的这个键的值为false。谁能帮我找出我错的地方吗?

  • 问题内容: 我正在尝试从子流程中返回值,但是不幸的是这些值无法拾取。因此,我在线程模块中成功使用了全局变量,但在使用多处理模块时却无法检索在子流程中完成的更新。我希望我想念一些东西。 在给定和的情况下,最后打印的结果始终与初始值相同。子进程正在更新这些全局变量,但是这些全局变量在父级中保持不变。 我无法发布我的问题,因此将尝试编辑原始内容。 这是不可腌制的对象: 这是我使用multiprocess

  • 主要内容:Python局部变量,Python全局变量,获取指定作用域范围中的变量所谓 作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。 变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。本节我们只讲解两种变量, 局部变量和 全局变量。 Python局部变量 在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能