假设在Mathematica中我定义了以下函数:
f[list_] := Map[Prime[Sow[#]] &, list];
Run Code Online (Sandbox Code Playgroud)
它输出一个素数列表,这样如果输入列表在位置i有n,那么输出列表将包含位置i的第n个素数.例如,
In[2]:= f[{1, 3, 4}]
Out[2]= {2, 5, 7}
Run Code Online (Sandbox Code Playgroud)
现在,如果由于某种原因(调试等...)我想检查输入到Prime函数中的值.由于Sow函数中的命令,我可以做到
In[3] := Reap[f[{1, 3, 4}]]
Out[3] := {{2, 5, 7}, {{1, 3, 4}}}
Run Code Online (Sandbox Code Playgroud)
有关Sow/Reap的更多详细信息,请参阅Wolfram文档.我的问题是,有没有相当于Mathematica的Sow and Reap功能的天然Python?特别是,有没有办法做这种事情,而不是从你想要做的python函数显式返回额外的东西,编写几乎相同但返回额外的东西,或使用全局变量的第二个python函数?