Python自省

函数,变量和对象可以使用内省

首先,使用help()全局函数,如果以docstring形式提供,我们可以获得文档。

然后,您可以使用print()获取有关函数的信息:

def increment(n):
    return n + 1

print(increment)

# <function increment at 0x7f420e2973a0>

或对象:

class Dog():
    def bark(self):
        print('WOF!')

roger = Dog()

print(roger)

# <main.Dog object at 0x7f42099d3340>

type()函数为我们提供了对象的类型:

print(type(increment))
# <class 'function'>

print(type(roger)) # <class ‘main.Dog’>

print(type(1)) # <class ‘int’>

print(type(‘test’)) # <class ‘str’>

dir()全局函数使我们能够找到对象的所有方法和属性:

print(dir(roger))

# [‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘bark’]

id()全局函数向我们显示了任何对象在内存中的位置:

print(id(roger)) # 140227518093024
print(id(1))     # 140227521172384

检查两个变量是否指向同一对象可能很有用。

inspect标准库模块为我们提供了更多工具来获取有关对象的信息,您可以在此处进行查看:https://docs.python.org/3/library/inspect.html


更多python教程: