我最近发现了iPython魔术函数,并编写了一些自定义魔术。我想使用单元格魔术来解析字符串,稍微修改它们并返回结果。是否有方法将我的自定义单元格魔术函数的输出存储在变量中?
我知道您可以存储像这样的行魔术函数的输出:
@register_line_magic
def linemagic(line, cell=None):
#do something
return line
hello = %linemagic hello
print(hello)返回:
>>> hello如果我有更大的字符串,我想使用单元格魔术代替:
@register_cell_magic
def cellmagic(line, cell=None):
#do something
return cell不可能使用hello = %%cellmagic ...来存储结果。还有另一种方法来捕获函数输出吗?
发布于 2022-12-02 09:07:45
您可以使用IPython的输入/输出缓存系统
输出缓存:
_ (一个下划线):存储以前的输出,比如Python的默认解释器。__ (两个下划线):下一个。___ (三个下划线):下一个-下一个。_n (n是提示计数器):输出结果_4,Out[4]或_oh[4]都做同样的事情同样,对于输入缓存:
_i,_ii,_iii:存储前输入、下一个输入和下一个输入。_i4、_ih[4]和In[4]:输入<n> (例如4)的内容In [2]: from IPython.core.magic import register_cell_magic
In [3]: @register_cell_magic
...: def cellmagic(line, cell=None):
...: #do something
...: return cell
...:
In [4]: %%cellmagic
...: "line0"
...: "line1"
...: "line2"
...:
...:
Out[4]: '"line0"\n"line1"\n"line2"\n\n'
In [5]: _
Out[5]: '"line0"\n"line1"\n"line2"\n\n'
In [6]: _4
Out[6]: '"line0"\n"line1"\n"line2"\n\n'
In [8]: _i4
Out[8]: '%%cellmagic\n"line0"\n"line1"\n"line2"'
In [9]: var = _4
In [10]: var
Out[10]: '"line0"\n"line1"\n"line2"\n\n'https://stackoverflow.com/questions/74643538
复制相似问题