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教程: