ArtOS 快速开发框架

ArtOS 快速开发框架

首页
ArtOS框架
使用文档视频教程
Micropython
官方文档学习教程固件开发
发现
树莓派ESP32
生态圈
智能生活直播物联工业物联Node-RED
开发资源
开发板软件资源器件资源
关于ArtOS
登录 →
ArtOS 快速开发框架

ArtOS 快速开发框架

首页 ArtOS框架
使用文档视频教程
Micropython
官方文档学习教程固件开发
发现
树莓派ESP32
生态圈
智能生活直播物联工业物联Node-RED
开发资源
开发板软件资源器件资源
关于ArtOS
登录
  1. 首页
  2. Micropython
  3. 学习教程
  4. 在Micropythond中如何判断回调的方法是协程方法?

在Micropythond中如何判断回调的方法是协程方法?

0
  • 学习教程
  • 发布于 2026-01-28
  • 9 次阅读
极客熊
极客熊

三个函数方法:

async def test1():
    print(f'async fn')
    
def test2():
    print(f'fn')
    
async def test1(arg1: int):
    print(f'async fn {arg1}')

我们要如何判断是否为协程呢?下面的方法可以判断

    @staticmethod
    def IsAsyncFunc(fn) -> tuple:
        """
        检测函数是否为异步协程函数
        """
        ret = fn()
        if hasattr(ret, "send") and hasattr(ret, "__next__"):
            # 可能是协程,但同步函数不能 await
            return True, ret
        return False, ret
    
    @staticmethod
    async def IsAsyncFn(fn) -> tuple:
        """
        调用 fn 并判断返回值是否可 await
        返回:
            (is_async: bool, result)
        """
        ret = fn()

        try:
            # 如果 ret 是协程 / async generator,就 await 它
            result = await ret
            return True, ret
        except TypeError:
            # 不能 await,说明是同步返回值
            return False, ret

如何调用?

把 要检测的函数 封装成一个零参函数再交给 判断, 或者传入 lambda: 函数名 (参数)

相关文章
在Micropythond中如何判断回调的方法是协程方法?

在Micropythond中如何判断回调的方法是协程方法?

三个函数方法: async def test1(): print(f'async fn') def test2(): print(f'fn') async def test1(arg1: int): print(f'async fn {arg1}') 我们

ISR在Micropyhon学习过程中,各阶段关注点

ISR在Micropyhon学习过程中,各阶段关注点

在嵌入式开发中,ISR(中断服务例程)安全性不是一开始就必须深究的内容,而是随着你对系统理解加深和实际项目需求出现时,才逐步成为重点关注的内容。下面我给你梳理一个学习阶段路线和对应关注点: 阶段 1:入门阶段(硬件和基础语言) 目标<

Micropython中的ISR操作

Micropython中的ISR操作

一、什么是ISR? ISR (Interrupt Service Routine) 是在硬件中断触发时执行的一段代码。中断是硬件事件,它允许处理器暂停当前任务,转而执行对特定事件的响应代码。 主要特点: 触发条件:当某些硬件外设(例如定时器、外部引脚、串口接收数据等)触发中断时,ISR 会被调用。

目录
  • 极客熊
  • 极客熊
  • 极客熊
Copyright © 2026 ArtOS All Rights Reserved. Powered by ArtOS.