You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向函数传入多个pandas DataFrame时如何取变量名作为保存文件名

解决方案

你遇到的问题核心是Python默认不会把变量名本身作为值传递给函数,你可以用两种方案实现需求:

方案1:关键字参数传参(最稳妥)

直接修改函数接收关键字参数,显式把变量名作为键传入,逻辑完全可控没有副作用:

def write_df_to_disk(**df_kwargs):
    for df_name, df in df_kwargs.items():
        save_path = f"/transformed/{df_name}.table"
        df.to_csv(save_path, sep="\t")

# 调用时指定关键字参数即可
write_df_to_disk(k562=k562, hepg2=hepg2, hoel=hoel)

方案2:自动提取调用时的变量名(无需修改调用代码)

如果你不想改动原有调用逻辑,可以通过inspect模块读取调用栈的代码上下文,自动提取传入的变量名:

import inspect

def write_df_to_disk(*args):
    # 获取函数调用处的上下文代码
    caller_ctx = inspect.getframeinfo(inspect.currentframe().f_back).code_context[0]
    # 解析得到调用时传入的参数名列表
    arg_names = [i.strip() for i in caller_ctx.split("(")[1].rsplit(")", 1)[0].split(",")]
    
    for df_name, df in zip(arg_names, args):
        save_path = f"/transformed/{df_name}.table"
        df.to_csv(save_path, sep="\t")

# 调用方式和你原有代码完全一致
write_df_to_disk(k562, hepg2, hoel)

注意:该方案仅适合调用时直接传入变量名的场景,如果调用时传入的是表达式、函数返回值等非变量名内容,会得到错误的文件名,优先推荐使用方案1。

内容的提问来源于stack exchange,提问作者moth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:54:04