如明境 发表于 2022-5-6 11:25:42

async def 中的局部变量怎么定义为全局

在async def内部定义变量并使用关键字后在外部调用提示未定义,具体应该怎么做啊C:\bot

isdkz 发表于 2022-5-6 11:30:45

使用 global 关键字,



def test():
    global a
    a = 3
test()
print(a)

如明境 发表于 2022-5-6 12:10:23

isdkz 发表于 2022-5-6 11:30
使用 global 关键字,



我试过了,没用,不知道是不是因为是async的原因

如明境 发表于 2022-5-6 12:12:15

提示错误 print(gld)
NameError: name 'gld' is not defined@tx.handle()
async def send_meg(bot: Bot,event:LifecycleMetaEvent):
    global gld
    gld = await bot.get_group_list()

print(gld)

isdkz 发表于 2022-5-6 12:19:26

如明境 发表于 2022-5-6 12:12
提示错误 print(gld)
NameError: name 'gld' is not defined

你的异步协程要执行过了才有这个变量呀

如明境 发表于 2022-5-6 20:16:52

isdkz 发表于 2022-5-6 12:19
你的异步协程要执行过了才有这个变量呀

怎样才可以解决这个问题呢,尝试了一下,找不到办法

isdkz 发表于 2022-5-6 20:18:26

如明境 发表于 2022-5-6 20:16
怎样才可以解决这个问题呢,尝试了一下,找不到办法

你这个是用在哪里的?从那个装饰器我没看出是在哪里用到的

如明境 发表于 2022-5-6 20:22:36

nonebot的,获取qq群列表的

如明境 发表于 2022-5-6 20:25:42

isdkz 发表于 2022-5-6 20:18
你这个是用在哪里的?从那个装饰器我没看出是在哪里用到的

from nonebot.adapters.onebot.v11 import GroupIncreaseNoticeEvent, Bot,Adapter,LifecycleMetaEvent
qlb = on_metaevent()
# 获取群列表
@qlb.handle()
async def qlb2(bot:Bot,event:LifecycleMetaEvent):
    global glds
    glds = await bot.get_group_list()
页: [1]
查看完整版本: async def 中的局部变量怎么定义为全局