You need to enable JavaScript to run this app. Python中断言输入为隐藏内置类实例的最佳实现方式
优惠活动
大模型
产品
解决方案
定价
更多

Python中断言输入为隐藏内置类实例的最佳实现方式

Python中校验生成器/生成器函数的标准方案

无需自定义哑生成器来获取类型,Python标准库已经提供了公开的专用工具,是更符合Python风格的实现:

方案1:校验生成器实例

如果你的逻辑需要先调用函数、再校验返回的是生成器实例,可以使用types模块暴露的GeneratorType:

import types

def myFunct(gen):
    g = gen()
    assert isinstance(g, types.GeneratorType)
    # 后续业务代码

types.GeneratorType和你通过临时生成器获取的类型完全等价,同时isinstance的校验方式比直接比对type更鲁棒,能兼容生成器的子类实现。

方案2:提前校验生成器函数

如果想要在调用参数前就完成校验,避免调用非生成器函数产生不必要的副作用,可以使用inspect模块的isgeneratorfunction接口:

import inspect

def myFunct(gen):
    # 无需执行函数即可完成参数合法性校验
    assert inspect.isgeneratorfunction(gen)
    g = gen()
    # 后续业务代码

如果需要处理异步生成器场景,可以对应使用types.AsyncGeneratorType和inspect.isasyncgenfunction完成校验。

内容的提问来源于stack exchange,提问作者tox123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 17:15:06