小编Pol*_*ics的帖子

打印函数的局部变量名称和值

为了帮助我调试我编写的一些代码,我想创建一个函数装饰器,在创建或修改每个变量时打印变量的名称及其值,基本上给我一个"逐个播放"视图当我调用该函数时会发生什么.

到目前为止,我一直在使用的方法只是添加一条线,就像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看起来像什么.我知道可以只打印装饰器的值ab

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)

但我完全不知道如何打印局部变量名称及其值.更不用说以"整洁"的方式做到这一点.

python namespaces decorator python-decorators

9
推荐指数
1
解决办法
1158
查看次数

标签 统计

decorator ×1

namespaces ×1

python ×1

python-decorators ×1