Python dir() 函数

Python dir() 语法

dir() 是 Python 的一个内置函数,它会返回一个列表,该列表包含某个对象的所有属性和方法。

语法:

dir(object)

说明:

参数 object 是可选的,它可以是任意对象(包括模块、函数、类、实例等)。对于 dir() 函数的使用,我们需要分为以下几种情况。

  • 参数 object 省略,dir() 会返回当前作用域内所有变量的列表。
  • 参数 object 是一个模块,则 dir() 会返回该模块所有方法(或函数)的列表。
  • 参数 object 是一个类或实例,dir() 会返回该类所有属性和方法的列表(包括继承成员)。

提示:

  • dir() 主要用于开发环境中的交互式调试,而不是在生产环境中使用。
  • dir() 返回的列表中,会包含 “普通属性” 以及 “特殊方法” (即 “魔法方法” )。

Python dir() 摘要

使用频率
官方文档 查看
相关函数 help()

Python dir() 示例

接下来,我们通过几个简单的例子来讲解一下 Python dir() 函数是如何使用的。

示例 1:dir() 不带参数

print(dir())

运行结果如下。

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

示例 2:dir() 的参数是一个模块

import math

print(dir(math))

运行结果如下。

['__doc__', '__file__','__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']

分析:

dir(math) 会返回 math 模块所有的函数。从这个例子也可以看出,如果想要查看某个模块都有哪些方法或函数,我们可以使用 dir() 函数来实现。

示例 3:dir() 的参数是一个类

class Hero():
    name = '船长'
    type = '力量型'
    def skill(self):
        print('放大招啦!')

print(dir(Hero))

运行结果如下。

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'skill', 'type']

分析:

前面一堆以 “__”(双下划线)开头、并且以 “__” 结尾的都是内置的魔法方法。最后部分的 name、skill、type 则是我们在 Hero 类中自定义的属性和方法。

示例 4:dir() 的参数是一个实例

class Hero():
    name = '船长'
    type = '力量型'
    def skill(self):
        print('放大招啦!')

h = Hero()
print(dir(h))

运行结果如下。

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'skill', 'type']

分析:

当 dir() 参数是一个对象时,本质上获取的也是该对象所对应类的所有属性和方法。

上一篇: help()

下一篇: eval()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号