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

Python如何根据函数入参名称动态创建变量并实现多返回值?

问题解答

1. Python函数多返回值说明

Python完全支持函数返回多个输出,只需在return语句后用逗号分隔多个返回对象即可,调用时可以用对应数量的变量接收返回值。

2. 按入参名称生成动态变量的实现方案

你需要的根据入参名称生成total_xx格式全局变量的需求,有两种常用实现方式:

方案1:显式传入名称参数(最稳妥,推荐优先使用)

不需要依赖其他解析逻辑,不存在环境兼容问题,代码示例:

import pandas as pd

def pyth_wins(df, df_name: str):
    # 替换为你实际的df处理逻辑,以下为求和示例
    processed_sum = df.sum(numeric_only=True).sum()
    # 生成动态变量名
    dynamic_var_name = f"total_{df_name}"
    # 将变量写入全局作用域,外部可直接引用
    globals()[dynamic_var_name] = processed_sum
    
    # 多返回值:处理后的df、求和结果,可按你的需求调整返回内容
    processed_df = df  # 替换为你实际处理完成的df
    return processed_df, processed_sum

调用示例:

# 假设你有2020年的DataFrame变量df_2020
res_df, total_res = pyth_wins(df_2020, "2020")
# 此时可直接访问生成的全局变量total_2020
print(total_2020)

方案2:自动解析入参变量名(无需额外传参)

如果不想额外传入名称参数,可以通过解析调用栈自动获取传入的变量名,代码示例:

import pandas as pd
import inspect

def pyth_wins(df):
    # 解析调用栈获取传入的变量名
    call_frame = inspect.currentframe().f_back
    input_var_name = inspect.getframeinfo(call_frame).code_context[0].split('(')[1].split(')')[0].strip()
    # 处理逻辑同方案1
    processed_sum = df.sum(numeric_only=True).sum()
    dynamic_var_name = f"total_{input_var_name}"
    globals()[dynamic_var_name] = processed_sum
    
    processed_df = df  # 替换为你实际处理完成的df
    return processed_df, processed_sum

调用示例:

df_2020 = pd.DataFrame({'col1': [1,2,3], 'col2': [4,5,6]})
res_df, total_res = pyth_wins(df_2020)
# 此时自动生成全局变量total_df_2020,可直接引用
print(total_df_2020)

如果是你示例中直接传入2020、2021这类字面量作为参数,该方案也会自动生成total_2020、total_2021变量,完全符合你的需求。

注意事项

  • 动态写入全局变量前请注意命名冲突,不要和已有的全局变量重名
  • 接收多返回值时如果不需要部分返回结果,可以用下划线_占位接收,比如_, total_res = pyth_wins(df_2020)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:57:02