可以通过使用装饰器或者使用Python内置的trace模块来实现。
def trace(func):
def wrapper(*args, **kwargs):
print(f"调用函数 {func.__name__},参数:{args}, {kwargs}")
result = func(*args, **kwargs)
print(f"函数 {func.__name__} 执行完毕,结果:{result}")
return result
return wrapper
@trace
def add(a, b):
return a + b
result = add(1, 2)
print(result)
输出结果:
调用函数 add,参数:(1, 2), {}
函数 add 执行完毕,结果:3
3
在上面的示例中,我们定义了一个名为trace
的装饰器函数,它接受一个函数作为参数,并返回一个包装函数wrapper
。在wrapper
函数中,我们首先打印出函数的名称和参数,然后调用原始函数,并打印出函数的执行结果。最后,我们将包装函数返回。
通过在函数定义前使用@trace
装饰器,我们实现了对add
函数的跟踪。
import trace
def add(a, b):
return a + b
tracer = trace.Trace(trace=0, count=1)
tracer.runfunc(add, 1, 2)
results = tracer.results()
results.write_results(show_missing=True, coverdir=".")
在上面的示例中,我们首先导入了trace模块,然后定义了一个名为add
的函数。接下来,我们创建了一个Trace
对象,并通过runfunc
方法来运行add
函数,并传入函数的参数。最后,我们通过results
方法获取跟踪结果,并使用write_results
方法将结果写入文件。
以上是在Python中跟踪函数调用的两种方法,可以根据实际需求选择适合的方法来实现函数调用的跟踪。
领取专属 10元无门槛券
手把手带您无忧上云