如何在Python函数中获取参数的输入变量名作为字符串?
获取函数参数的传入变量名
可以借助Python的inspect模块结合正则解析,实现打印传入参数的变量名需求,具体代码如下:
import inspect import re def func(df_1, df_2): # 获取调用该函数的栈帧上下文 caller_frame = inspect.currentframe().f_back # 提取调用代码的源码文本 caller_source = inspect.getsource(caller_frame) # 正则匹配函数调用语句中的参数部分 call_pattern = re.search(r'func\((.*?)\)', caller_source) if call_pattern: # 分割并清理参数名称 param_names = [name.strip() for name in call_pattern.group(1).split(',')] print(param_names[0]) # 输出 'first_df' print(param_names[1]) # 输出 'second_df' # 测试示例 import pandas as pd first_df = pd.DataFrame({'col1': [1, 2, 3]}) second_df = pd.DataFrame({'col2': [4, 5, 6]}) func(first_df, second_df)
说明
- 这种方法仅在调用函数时传入的是直接变量名时有效,如果是传入表达式(比如
func(pd.DataFrame(...), ...)),解析出的会是表达式内容而非变量名。 - 该方案更适合调试场景,生产代码中不建议依赖,因为它对调用代码的格式(比如换行、空格)敏感,正则匹配可能因格式变化失效。
内容的提问来源于stack exchange,提问作者Keyboard Queen
相关产品推荐
相关产品推荐

