为了帮助我调试我编写的一些代码,我想创建一个函数装饰器,在创建或修改每个变量时打印变量的名称及其值,基本上给我一个"逐个播放"视图当我调用该函数时会发生什么.
到目前为止,我一直在使用的方法只是添加一条线,就像print(foo)
我想看到发生了什么,但这非常耗时,使我的代码看起来很混乱(可能是非Pythonicness的缩影).
实际上,我想做的是:
@show_guts
def foo(a,b):
biz = str(a)
baz = str(b)
return biz + baz
foo("banana","phone")
Run Code Online (Sandbox Code Playgroud)
在IDE中打印这样的东西:
biz = "banana"
baz = "phone"
bananaphone
Run Code Online (Sandbox Code Playgroud)
我的问题是@show_guts
看起来像什么.我知道可以只打印装饰器的值a
和b
def print_args(function):
def wrapper(*args,**kwargs):
print("Arguments:",args)
print("Keyword Arguments:",kwargs)
return function(*args,**kwargs)
return wrapper
Run Code Online (Sandbox Code Playgroud)
这给了我
Arguments: ('banana', 'phone')
Keyword Arguments: {}
'bananaphone'
Run Code Online (Sandbox Code Playgroud)
但我完全不知道如何打印局部变量名称及其值.更不用说以"整洁"的方式做到这一点.