Python中将变量名转换为字符串的两种实用方法

Ivy
Ivy
发布时间:2026-10-12 | 4人浏览过
原创

本文介绍在Python中处理多个模型指标时,如何将变量名转换为字符串以便清晰输出。通过两种方法:利用globals()字典查找对象名称,以及使用inspect模块解析源码行获取变量名。文章提供具体代码示例及输出结果对比,帮助开发者优化模型评估信息的展示方式。

在日常开发中,经常需要输出模型的性能指标。当涉及多个模型对比时,为了清晰标识各个模型的结果,往往需要将具体的模型变量名转换为字符串形式进行输出。

目前常见的实现方式主要有两种:

一、基于方法层面的实现:

方法1(推荐在函数内部使用):

def namestr(obj, namespace):
 return [name for name in namespace if namespace[name] is obj]
print(namestr(lr_origin,globals()),'\n',
namestr(lr_origin,globals())[0])

运行结果如下:

‘lr_origin'

方法2:

import inspect, re
def varname(p):
 for line in inspect.getframeinfo(inspect.currentframe().f_back)[3]:
 m = re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)', line)
 if m:
 return m.group(1)
varname(lr_origin)

运行结果如下:

'lr_origin'

二、具体示例演示

使用方法1的实现方式

def small_feature_model(model,X_train=X_train,y_train=y_train,X_test=X_test, y_test=y_test):
 pca = PCA(n_components=150,random_state=0,whiten=True)
 pipeline = Pipeline([('scale',StandardScaler()),('pca',pca)])
 processing = pipeline.fit(X_train)
 X_train = processing.transform(X_train)
 X_test = processing.transform(X_test)
 model.fit(X_train, y_train)
 y_pred = model.predict(X_test)
# print(namestr(model,globals()))
 print('**small-%s的准确率**: %.3f' %(namestr(model,globals())[0],accuracy_score(y_pred=y_pred, y_true=y_test)))
 small_feature_model(svm_origin)

最终输出结果

['svm_origin'] **small-svm_origin的准确率**: 0.789

for model in [svm_origin, svm_rbf, lr_origin]: small_feature_model(model)

运行输出

**small-svm_origin的准确率**: 0.789
**small-svm_rbf的准确率**: 0.811
**small-lr_origin的准确率**: 0.835

使用方法2的实现方式

def small_feature_model(model,X_train=X_train,y_train=y_train,X_test=X_test, y_test=y_test):
 pca = PCA(n_components=150,random_state=0,whiten=True)
 pipeline = Pipeline([('scale',StandardScaler()),('pca',pca)])
 processing = pipeline.fit(X_train)
 X_train = processing.transform(X_train)
 X_test = processing.transform(X_test)
 model.fit(X_train, y_train)
 y_pred = model.predict(X_test)
# print(namestr(model,globals()))
 print('**small-%s的准确率**: %.3f' %(varname(model),accuracy_score(y_pred=y_pred, y_true=y_test)))
 small_feature_model(svm_origin)

运行输出

**small-model的准确率**: 0.789

for model in [svm_origin, svm_rbf, lr_origin]: small_feature_model(model)

运行输出

**small-model的准确率**: 0.789
**small-model的准确率**: 0.811
**small-model的准确率**: 0.835

补充知识:Python实现字符串翻转的函数示例

字符串翻转函数的Python实现

string = 'abcdef'
def demo1(string):
 if len(string) <= 1:
  return string
 return demo1(string[1:]) +string[0]
print(demo1(string))

该实现中结合了递归调用与切片操作,其具体执行效率值得进一步探讨。

以上关于Python函数中将变量名转换为字符串的实例分享完毕,希望能为读者提供有益参考,欢迎大家继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表