{site_name}

{site_name}

🌜 搜索

Python inspect是Python标准库中的一个模块,提供了许多用于检查和获取有关对象、代码和堆栈跟踪信息的函数

Python 𝄐 0
python inspect.getmembers,python inspect 安装,python inspect获取字典名字,python inspect库,python inspect模块能获取函数中的变量值吗,python inspectdb
Python inspect是Python标准库中的一个模块,提供了许多用于检查和获取有关对象、代码和堆栈跟踪信息的函数。它可以帮助开发者在运行时对程序进行动态分析和调试。

以下是一些Python inspect模块的常见用法:

1. 获取对象信息:通过inspect模块的函数可以获取到对象的属性、方法列表等信息,例如:

python
import inspect

class MyClass:
def __init__(self, name):
self.name = name
def say_hello(self):
print("Hello,", self.name)

obj = MyClass("John")
print(inspect.getmembers(obj))


输出为:


[('__class__', <class '__main__.MyClass'>),
('__delattr__', <method-wrapper '__delattr__' of MyClass object at 0x7f81303222b0>),
('__dict__', {'name': 'John'}),
('__dir__', <built-in method __dir__ of MyClass object at 0x7f81303222b0>),
('__doc__', None),
('__eq__', <method-wrapper '__eq__' of MyClass object at 0x7f81303222b0>),
('__format__', <built-in method __format__ of MyClass object at 0x7f81303222b0>),
('__ge__', <method-wrapper '__ge__' of MyClass object at 0x7f81303222b0>),
('__getattribute__',
<method-wrapper '__getattribute__' of MyClass object at 0x7f81303222b0>),
('__gt__', <method-wrapper '__gt__' of MyClass object at 0x7f81303222b0>),
('__hash__', <method-wrapper '__hash__' of MyClass object at 0x7f81303222b0>),
('__init__', <bound method MyClass.__init__ of <__main__.MyClass object at 0x7f81303222b0>>),
('__init_subclass__', <built-in method __init_subclass__ of type object at 0x5622645c5a40>),
('__le__', <method-wrapper '__le__' of MyClass object at 0x7f81303222b0>),
('__lt__', <method-wrapper '__lt__' of MyClass object at 0x7f81303222b0>),
('__module__', '__main__'),
('__ne__', <method-wrapper '__ne__' of MyClass object at 0x7f81303222b0>),
('__new__', <built-in method __new__ of type object at 0x5622645c5a40>),
('__reduce__', <built-in method __reduce__ of MyClass object at 0x7f81303222b0>),
('__reduce_ex__', <built-in method __reduce_ex__ of MyClass object at 0x7f81303222b0>),
('__repr__', <method-wrapper '__repr__' of MyClass object at 0x7f81303222b0>),
('__setattr__', <method-wrapper '__setattr__' of MyClass object at 0x7f81303222b0>),
('__sizeof__', <built-in method __sizeof__ of MyClass object at 0x7f81303222b0>),
('__str__', <method-wrapper '__str__' of MyClass object at 0x7f81303222b0>),
('__subclasshook__', <built-in method __subclasshook__ of type object at 0x5622645c5a40>),
('__weakref__', None),
('name', 'John'),
('say_hello', <bound method MyClass.say_hello of <__main__.MyClass object at 0x7f81303222b0>>)]


2. 获取函数源代码:可以使用inspect.getsource()函数获取函数的源代码,例如:

python
import inspect

def my_func():
print("Hello, world!")

source = inspect.getsource(my_func)
print(source)


输出为:


def my_func():
print("Hello, world!")


3. 获取调用栈信息:可以使用inspect模块的函数获取当前程序执行到哪个函数、在哪个文件中等信息,例如:

python
import inspect

def func1():
func2()

def func2():
func3()

def func3():
for frame_info in inspect.stack():
print(frame_info.filename, frame_info.function)

func1()


输出为: