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

如何获取函数返回元素及检视函数返回的变量名称?

好问题!咱们一步步来解决你的两个疑问:

获取函数的返回元素

对于你定义的foo()函数,它返回的是一个包含两个元素的元组(Python里用逗号分隔多个返回值时,默认会自动打包成元组),获取返回元素的常用方式有两种:

  • 直接拆包赋值:这是最直观的用法,直接把返回的元素分配给对应变量:

    def foo():
        x = 10
        y = 20
        return x, y
    
    x_val, y_val = foo()
    print(x_val)  # 输出 10
    print(y_val)  # 输出 20
    
  • 整体接收后按索引访问:如果不确定返回元素数量,或者需要统一处理结果,可以先把返回值存为一个变量,再通过索引提取:

    result = foo()
    print(result[0])  # 输出 10
    print(result[1])  # 输出 20
    
检视函数返回的变量名称

这里要先明确一个核心点:当函数执行return x, y时,Python只是把x和y的值打包成元组返回,原变量名x和y并不会被保留在返回结果里——返回的只是一组值,没有自带名称信息。不过我们有几种办法实现你的需求:

方法1:修改函数返回字典(最简洁直接)

如果可以调整函数定义,让它返回一个字典,用键对应你想要的变量名,值对应变量的值,这样就能直接拿到名称:

def foo():
    x = 10
    y = 20
    return {'x': x, 'y': y}

result = foo()
print(result.keys())  # 输出 dict_keys(['x', 'y'])
print(result['x'])    # 输出 10

这种方式简单易懂,后续维护也方便,是最推荐的简洁实现。

方法2:用AST模块解析函数源代码(不修改原函数)

如果你不想改动原函数,可以通过解析函数的抽象语法树(AST)来提取return语句里的变量名,这种方式更可靠,适合不能修改原函数的场景:

import ast

def get_return_var_names(func):
    # 获取函数源代码
    source = ast.get_source(func)
    # 解析为AST树
    tree = ast.parse(source)
    # 定位函数定义节点
    func_def = tree.body[0]
    # 定位return语句节点(假设函数最后一行是return)
    return_stmt = func_def.body[-1]
    # 提取return中的变量名
    return [node.id for node in return_stmt.value.elts]

# 测试你的foo函数
def foo():
    x = 10
    y = 20
    return x, y

print(get_return_var_names(foo))  # 输出 ['x', 'y']

注意:这个方法依赖函数的源代码格式,比如return语句需是单行的return x,y,如果是复杂表达式或多行写法,需要调整解析逻辑。

方法3:inspect模块结合正则(简单但鲁棒性稍弱)

另一种轻量方式是用inspect模块获取函数源代码,再用正则匹配return语句里的变量名:

import inspect
import re

def get_return_vars(func):
    source = inspect.getsource(func)
    # 匹配return后的变量名(适用于简单场景)
    match = re.search(r'return\s+(.*)', source)
    if match:
        return [var.strip() for var in match.group(1).split(',')]
    return []

print(get_return_vars(foo))  # 输出 ['x', 'y']

这个方法比AST更简单,但正则容易被复杂的return语句(比如带表达式、换行)干扰,适合结构简单的函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:38:43