如何实现自动识别变量的Python自定义print格式化输出函数?
解决方案
原代码的问题在于,f'{el}'只是将el变量的字符串内容直接输出,并没有把el的内容当作变量名去解析对应的值。要实现自动识别字符串中的变量名并输出其值,可以通过访问全局变量字典来实现:
Test = 'Hello!' def prints(druck): # 获取全局作用域的变量字典 global_vars = globals() for el in druck.split(): # 检查当前单词是否是全局变量 if el in global_vars: print(global_vars[el]) else: print(el) prints('Hello? Test')
运行这段代码后,输出会符合预期:
Hello? Hello!
补充说明
- 如果需要同时支持局部变量,可以结合
locals()函数,优先检查局部作用域再检查全局作用域,示例如下:
def prints(druck): local_vars = locals() global_vars = globals() for el in druck.split(): if el in local_vars: print(local_vars[el]) elif el in global_vars: print(global_vars[el]) else: print(el)
- 注意:如果字符串中的普通单词恰好与某个变量名重名,会被自动替换为变量值,这是该功能的预期行为。
内容的提问来源于stack exchange,提问作者Emse
相关产品推荐
相关产品推荐

