You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以Pythonic方式检查对象x是否为模块?

判断对象是否为模块的Pythonic方式

我们知道用type(x) is 类型的方式可以判断内置类型(如str、list、int等)以及正确导入的类,但这种方法没法直接用来判断模块:

type(x) is module  # NameError: name 'module' is not defined.

常见的变通方案有两种:

str(type(x)) == "<class 'module'>"
type(x) is type(os)  # 或者用任意已导入的模块对象

更Pythonic的实现方式

有两种更规范、符合Python风格的方法:

  • 使用inspect模块的ismodule()函数
    这是专门用于判断对象是否为模块的直观方法:
import inspect
import os

inspect.ismodule(os)  # 返回 True
inspect.ismodule("test")  # 返回 False
  • 从types模块导入ModuleType进行判断
    types模块提供了各种内置类型的官方引用,其中包含模块类型:
import types
import os

type(os) is types.ModuleType  # 返回 True
isinstance(os, types.ModuleType)  # 同样有效,且更适配可能存在的子类场景

注:isinstance()相比type() is更灵活,若遇到自定义模块子类(极为罕见),isinstance()仍能正确识别,而type() is则无法匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:32:02