【发布时间】:2015-02-23 09:31:21
【问题描述】:
假设有两个 Python 函数:
def f1(x):
return x
def f2(x):
return x,x**2
我想知道f1返回了多少输出,f2返回了多少输出。
我想避免以下解决方案:
result = f1(1)
no_outputs = len(result) if type(result) == tuple else 1
由于当函数返回元组时此解决方案失败。
我开始使用 python ast(抽象语法树)库,想知道是否有任何方法可以解析函数的语法树以计算返回的输出数量?
类似的东西:
import inspect
import ast
src = inspect.getsourcelines(f1)[0]
string = ''.join(src)
ast_ = ast.parse(string)
我探索了ast_,但无法找到回报。
【问题讨论】:
-
你为什么要这样做?
-
由于
f1是硬编码的,只需查看其文档即可了解它返回的内容。 -
我正在编写一些代码,这些代码将根据函数
f返回的输出数量来运行。不幸的是,由于复杂的原因,我无法改变f的工作方式并标准化它的输出(这是正确的做法):) -
对于
f1和f2,您对这个问题的预期输出是什么? -
Python 是动态类型的。这并不意味着它很神奇,你可以返回任何你想要的值......
标签: python function output abstract-syntax-tree