在python中打印变量名

Print variable name in python

本问题已经有最佳答案,请猛点这里访问。

这里的bkd_训练,bkd_测试是数据帧。

我想把数据帧的名字和它的形状一起打印出来。

1
2
for data in [bkd_train, bkd_test]:
    print("{} : {}".format(?, data.shape))

如果我使用的是"数据",那么它正在打印数据帧。

但我想要这样的O/P:

1
2
bkd_train : (10886, 12)
bkd_test : (1111,11)


我将迭代变量名本身,然后使用eval来评估将为您提供数据帧的名称。

1
2
3
for dataName in ['bkd_train', 'bkd_test']:
    data = eval(dataName)
    print("{} : {}".format(dataName, data.shape))

不能将变量名作为字符串获取,但可以在输入中传递字符串并查询locals字典以获取值:

1
2
for data in ["bkd_train","bkd_test"]:
    print("{} : {}".format(data,locals()[data].shape))

如果变量是局部的,它就会工作。如果它们是全局的,则使用globals,在locals上使用fallback,或者仅使用eval(在该上下文中不是问题,因为要计算的字符串是常量)

另请阅读:如何将变量名作为字符串获取?