你好,我是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。
谢谢
答案 0 :(得分:0)
await
关键字只能在异步函数和方法中使用。您可以阅读有关异步代码的更多信息,以了解原因。
该解决方案是使用darksky = DarkSky(API_KEY)
而不是darksky = DarkSkyAsync(API_KEY)
,而没有您要完成的工作以及如何完成的任何细节。
答案 1 :(得分:0)
我认为此答案对搜索与我相同的问题的人很有用。 要在同步上下文中使用异步函数,可以使用事件循环。您可以出于教育目的从头开始编写它。 您可以从这个答案开始 https://stackoverflow.com/a/51116910/14154287 并继续接受David Beazley的书籍进行教学。
但是asyncio的开发人员已经为您做到了。
import asyncio
loop = asyncio.get_event_loop()
forecast = loop.run_until_complete(darksky.get_forecast(...<here place arguments>...))
loop.close()