python-3.x 语法错误:'await'外部函数

utugiqy6  于 2023-05-23  发布在  Python
关注(0)|答案(3)|浏览(227)

你好,我是python新手,我正在尝试使用Detrous制作的Dark Sky python API。当我运行演示代码时,我看到一个错误:

forecast = await darksky.get_forecast(
              ^
SyntaxError: 'await' outside function

该误差由以下原因引起:

forecast = await darksky.get_forecast(
    latitude, longitude,
    extend=False, # default `False`
    lang=languages.ENGLISH, # default `ENGLISH`
    units=units.AUTO, # default `auto`
    exclude=[weather.MINUTELY, weather.ALERTS] # default `[]`
)

我不知道如何解决这个问题,我使用的是Python 3。
谢谢

2skhul33

2skhul331#

我想这个答案对那些和我搜索相同问题的人会很有用。要在同步上下文中使用异步函数,可以使用事件循环。你可以为了教育的目的从头开始写。你可以从这个答案https://stackoverflow.com/a/51116910/14154287开始,继续接受大卫·比兹利的教育。
但是asyncio的开发人员已经为你做了这些。

import asyncio

loop = asyncio.get_event_loop()
forecast = loop.run_until_complete(darksky.get_forecast(...<here place arguments>...))
loop.close()
yks3o0rb

yks3o0rb2#

await关键字只能在异步函数和方法中使用。您可以阅读更多关于异步代码的内容以了解原因。
解决方案是使用darksky = DarkSky(API_KEY)而不是darksky = DarkSkyAsync(API_KEY),而不需要任何关于您想要实现什么以及如何实现的细节。

l3zydbqr

l3zydbqr3#

在较新版本的python(v3.7+)中,您可以通过使用asyncio.run在sync上下文中调用async函数:

import asyncio

forecast = asyncio.run(darksky.get_forecast(...))

相关问题