我想定义一个日志函数,该函数使用消息调用,后跟一个或多个要打印的变量.所以,如下所示:
log( "Oh no, error.", x, d)
Run Code Online (Sandbox Code Playgroud)
log将被定义为sorta,如:
def log( msg, *arg):
# Loop through arg, printing caller's variable's name and value.
Run Code Online (Sandbox Code Playgroud)
这将记录以下文件:
Oh no, error.
x = 5
d = { foo: "Foo", goo: "Goo" }
Run Code Online (Sandbox Code Playgroud)
这可以完成吗?我可以使用inspect打印本地和参数,但我不知道是否可以使用前一帧的变量名来迭代当前帧中的值.(locals在inspect.getargvalues(previousFrame)有名字,但是很多其他的名字了.)
我认为你可以使用这样的东西:
定义
def log(msg, **kwargs):
print(msg)
for key, value in kwargs.items():
print('{0} = {1}'.format(key,value))
Run Code Online (Sandbox Code Playgroud)
定义(如果必须按顺序)
def log(msg, **kwargs):
print(msg)
for key, value in sorted(kwargs.items()):
print('{0} = {1}'.format(key,value))
Run Code Online (Sandbox Code Playgroud)
用法
msg='Oh no, error'
log(msg, x=5, y=6)
Run Code Online (Sandbox Code Playgroud)
输出
Oh no, error
y = 6
x = 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |