Как исправить ошибку "SyntaxError: 'await' outside async function", возникающую в асинхронной функции на 12 строке кода в Python?
Да, зачастую возникают сложности из-за асинхронной работы, особенно при использовании ключевых слов вроде await и async. Ошибка "SyntaxError: 'await' outside async function" возникает потому, что ключевое слово await должно использоваться только в асинхронных функциях. Для исправления этой ошибки, убедитесь, что вы определили вашу функцию как асинхронную, добавив ключевое слово async перед определением функции. Например: ```python async def my_function(): result = await some_async_function() ``` Таким образом, ваша асинхронная функция будет корректно работать с оператором await. Важно помнить, что использование ключевых слов async и await требует особого внимания к структуре и логике вашего кода.
c.on_click = lambda event: await self.btn_clicked(event)
Здесь создаётся лямбда-функция (не асинхронная), из которой вызывается асинхронная функция.
В этом и проблема.
Если у вас апи позволяет сюда (c.on_click) подавать асинхронную функцию, то сделайте её замыканием:
async for r in self.element.content.controls: async for c in r.controls: async def on_click(event): return await self.btn_clicked(event) c.on_click = on_click
Но это всё не нужно, можно просто подавать в вашем конрктеном случае напрямую нужную функцию:
async for r in self.element.content.controls: async for c in r.controls: c.on_click = self.btn_clicked
А если on_click требует только синхронную функцию, то так не прокатит.