【发布时间】:2020-02-03 20:57:19
【问题描述】:
我想通过检查多个变量来调试我的 Python 代码,输出它们的名称和内容,相当于 Raku 的 dd(Raku 以前称为“Perl 6”):
another post 中提到了我找到的最接近的值,它将 Python 的 pprint 与 Perl 5 的 Data::Dumper 进行了比较。但是,与dd 不同,它们都不会输出变量的名称。 Raku 中的 dd 最接近 Perl 5 模块 Data::Show 中的 show 函数,除了 show 额外输出文件名和行号。
这里是 Raku 的 dd 的演示:
#!/bin/env perl6
my %a = ( :A(1), :B(2) );
my %c = ( :C(3), :D(4) );
dd %a;
dd %c;
运行时会产生以下结果:
Hash %a = {:A(1), :B(2)} Hash %c = {:C(3), :D(4)}
(顺便说一下,Perl 或 Raku 中的 Hash 相当于 Python 中的字典)
这是我在 Python 中最接近的版本,但它冗余地需要变量名和变量本身:
#!/usr/bin/env python
def tiny_dd(name,x):
print(name + ' is "' + str(x) + '"')
a = { 'A':1, 'B':2}
c = { 'C':3, 'D':4}
tiny_dd('a',a)
tiny_dd('c',c)
运行时会产生以下结果:
a is "{'A': 1, 'B': 2}" c is "{'C': 3, 'D': 4}"
【问题讨论】:
-
如果你真的想使用变量名,并且只声明一次,那么你可以利用
locals方法。def print_var(name): print(f"{name} is {json.dumps(locals()['name'])}")
标签: python