首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python中的线程更改全局变量

用Python中的线程更改全局变量
EN

Stack Overflow用户
提问于 2014-07-23 01:29:08
回答 1查看 4.4K关注 0票数 1

我正在尝试编写一个脚本,每10秒更新一个全局变量。为了简单起见,我们只需增加q一次的教学时间

代码语言:javascript
复制
import time, threading

q = 0
def f(q):
    # get asset position every 10 seconds:
    q += 1
    print q

    # call f() again in 10 seconds
    threading.Timer(10, f).start()


# start calling f now and every 10 sec thereafter
f(q)

相反,python说:

代码语言:javascript
复制
UnboundLocalError: local variable 'q' referenced before assignment

更改变量q的正确方法是什么?

此示例使用线程,不更新任何值。Run certain code every n seconds

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-23 01:38:07

您需要显式声明q为全局的。否则,q += 1会混淆解释器。

代码语言:javascript
复制
import threading

q = 0
def f():
    global q
    q += 1
    print q
    threading.Timer(10, f).start()

f()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24900460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档