Wolfram Mathematica 函数使用的变量列表

A list of variables used by Wolfram Mathematica function

有没有办法获取函数使用的变量列表? 例如: 一=1; b=2; f[x_]:= 2a*x+b;

需要: 一些函数[f]

输出: {{x},{a,b}}

函数的参数 ({x}) 并不是必须的。

谢谢。

要获取所有符号(不一定是变量),您可以从以下内容开始:

DownValues[f]

产生:

{HoldPattern[f[x_]] :> 2 a x + b}

然后问题是以您不让 Mathematica 进行替换的方式处理它。这是通过 Hold:

完成的
held=(Hold //@ DownValues[f][[1]])[[1, 2]]

产生:

Hold[Hold[Hold[2] Hold[a] Hold[x]] + Hold[b]]

您可以提取所有看起来像符号的东西:

Cases[held, Hold[_Symbol], Infinity]

你得到:

{Hold[a], Hold[x], Hold[b]}

为了让它更漂亮一点:

Union[Flatten[Hold @@ Cases[held, Hold[_Symbol], Infinity]]]

这给你:

Hold[a, b, x]

您仍然需要 Hold,因为一旦您丢失它 Mathematica 就会计算 ab,您将将它们作为符号丢失。

如果您注意到,它会将 x 视为一个符号,您可能不需要它,因为它是一个参数。您可以从 DownValues[f][[1]] RuleDelayed (:>) 表达式的左侧梳理参数,并提取它们,但我会把这个细节留给您。