SyntaxError:“等待”外部函数,即使它在异步内部

Posted

技术标签:

【中文标题】SyntaxError:“等待”外部函数,即使它在异步内部【英文标题】:SyntaxError: 'await' outside function even tho it is inside a async 【发布时间】:2021-05-27 19:59:54 【问题描述】:

我正在尝试用 python 制作我的第一个 discord 机器人,它是一个经济型机器人,但它说我不能使用 await 函数,我不知道为什么。

@bot.command()
async def withdraw(ctx,amount = None):
    await open_account(ctx.author)

  if amount == None:
      await ctx.send("Please enter a valid amount")
      return
  
bal = await update_bank(ctx.author)

amount = int(amount)
if amount>bal[1]:
    await ctx.send("You don't have enough potatoes!")
    return
if amount<0:
    await ctx.send("Can only send positive potatoes! No negative!")
    return

await update_bank(ctx.author,amount)
await update_bank(ctx.author,-1*amount, "bank")

await ctx.send(f"You withdrew amount potatoes!")

【问题讨论】:

如果这是 discord.rewritten,那么要么不要使用 async,要么确保你使用的是正确的 python 版本。 【参考方案1】:

好的,所以我看到了 2 个问题。第一个是@bot.command 必须与async def 对齐,第二个是你有6 个等待函数。请指定哪个 await 函数给您错误。

【讨论】:

【参考方案2】:

答案只是将@bot.commandasync def 对齐

【讨论】:

而且,大概是为了纠正其余的缩进问题。您不能在async def ... 函数之外使用await()。你从bal = await update_bank(ctx.author)(根本没有缩进)开始的行在函数之外,所以这六个等待会引发编译错误。 请点击我的答案上的复选标记,以便此问题有答案

以上是关于SyntaxError:“等待”外部函数,即使它在异步内部的主要内容,如果未能解决你的问题,请参考以下文章

你如何摆脱“SyntaxError:'await'外部函数”

等待总是抛出 SyntaxError:等待仅在 sequelize 的异步函数中有效 [重复]

NodeJS 中的异步/等待

SyntaxError:没有找到非本地“i”的绑定

即使使用 asyncio 和 aiohttp,方法也会等待请求响应

为啥 HttpClient 不保存基地址,即使它在 Startup 中设置