从python中的异步函数修改全局变量[重复]

Posted

技术标签:

【中文标题】从python中的异步函数修改全局变量[重复]【英文标题】:Modify global variable from async function in python [duplicate] 【发布时间】:2020-06-28 21:41:12 【问题描述】:

我正在使用 discord.py 在 Python 中制作一个 Discord 机器人。 我想从异步线程设置/修改全局变量。

message = ""

@bot.command()
async def test(ctx, msg):
    message = msg

但是这不起作用。我怎样才能做到这一点?

【问题讨论】:

它不起作用是什么意思?在另一个函数中,值没有反映您在 test 中设置?全局变量应该在异步函数中可用,并且值会改变。很可能它会在其他地方被覆盖。 这能回答你的问题吗? Using global variables in a function @TurePålsson 感谢您指出这一点,显然您必须在所有功能中使用关键字 global 来更改它。 【参考方案1】:

正如我在评论中所说,无论您在哪里修改全局变量,都必须在函数中使用关键字 global。如果您只是在功能中阅读它,那么您不需要它。

message = ""

@bot.command()
async def test(ctx, msg):
    global message
    message = msg

【讨论】:

以上是关于从python中的异步函数修改全局变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

执行异步forEach循环后重新定义全局变量[重复]

Ajax 异步与同步(jQuery 在函数中修改全局变量)

Python 函数内变量的作用域

python 中怎么对一个全局的图变量在函数中进行值修改

PYTHON 函数局部变量和全局变量

如何从 google-cloud-platform vminstance 中的 pubsub 回调函数调用全局变量?