Python 中如何获取传入函数的输入参数对应的原变量名称
Python函数内获取调用时传入的原变量名实现方法
可以通过inspect模块解析调用栈的上下文代码实现,完整可运行的示例代码如下:
import inspect a = 1 b = 2 c = 3 def test(x): # 获取当前函数调用的上层帧(即调用test的代码所在的帧) caller_frame = inspect.currentframe().f_back # 提取调用行的原始代码 call_code = inspect.getframeinfo(caller_frame).code_context[0].strip() # 解析出test括号内的参数内容 var_name = call_code[call_code.find('(')+1 : call_code.rfind(')')].strip() print(var_name) test(b)
运行上述代码,输出结果为b,完全符合需求。
额外说明
- 上述代码仅适配单参数、调用时直接传单个变量的场景,如果调用时传入的是常量、多参数、表达式,需要根据实际场景调整字符串解析逻辑
- 调用栈解析有额外性能开销,不适合在高频率调用的核心逻辑中使用
- 该方案属于非常规的黑魔法实现,生产环境优先选择显式传入变量名的写法,可维护性和兼容性更好
内容的提问来源于stack exchange,提问作者ssw101
相关产品推荐
相关产品推荐

