海量编程文章、技术教程与实战案例

网站首页 > 技术文章 正文

Python内置函数dir()和help()

yimeika 2025-06-05 20:02:15 技术文章 7 ℃

dir()是一个非常有用的指令,可以通过它查看任何模块中所包含的工具。

dir([object])

如果没有实参,则返回当前本地作用域中的名称列表。如果有实参,它会尝试返回该对象的有效属性列表。

如果对象有一个名为 __dir__() 的方法,那么该方法将被调用,并且必须返回一个属性列表。这允许实现自定义 __getattr__() 或 __getattribute__() 函数的对象能够自定义 dir() 来报告它们的属性。

如果对象未提供 __dir__() 方法,该函数会尽量从对象的 __dict__ 属性和其类型对象中收集信息。得到的列表不一定是完整,如果对象带有自定义 __getattr__() 方法时,结果可能不准确。

默认的 dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息:

  • 如果对象是模块对象,则列表包含模块的属性名称。
  • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。
  • 否则,列表包含对象的属性名称,它的类属性名称,并且递归查找它的类的所有基类的属性。

返回的列表按字母表排序。例如:

>>>import struct
>>>dir()   # 返回当前本地作用域中的名称列表 
['__builtins__', '__name__', 'struct']
>>>dir(struct)   #返回模块struct的名称列表 
['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',
 '__initializing__', '__loader__', '__name__', '__package__',
 '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
 'unpack', 'unpack_from']

>>>class Shape:
    def __dir__(self):
        return ['area', 'perimeter', 'location']
>>>s = Shape()
>>>dir(s)  #返回类的属性名称
['area', 'location', 'perimeter']

以模块math为例

Python还提供一个很周到的命令help(),让我们可以查看每个函数的使用方法。

help([object])

启动内置的帮助系统(此函数主要在交互式中使用)。如果没有实参,解释器控制台里会启动交互式帮助系统。如果实参是一个字符串,则在模块、函数、类、方法、关键字或文档主题中搜索该字符串,并在控制台上打印帮助信息。如果实参是其他任意对象,则会生成该对象的帮助页。

Tags:

最近发表
标签列表