有没有办法获取函数使用的变量列表? 例如: 一个= 1; B = 2; f [x _]:= 2a * x + b;
需要: SomeFunction并[f]
输出: {{X},{A,B}}
函数({x})的参数实际上并不是强制性的。
感谢。
答案 0 :(得分:0)
要获得所有符号(不一定是变量),您可以从以下内容开始:
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 就会评估a
和b
,你就会失去它们符号。
如果您注意到,它会考虑x
一个您可能不想要的符号,因为它是一个参数。您可以从DownValues[f][[1]]
RuleDelayed
(:>
)表达式的左侧挑出参数,然后将其解压缩,但我会将此详细信息留给您。