首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPython自定义单元格魔术存储输出变量?

iPython自定义单元格魔术存储输出变量?
EN

Stack Overflow用户
提问于 2022-12-01 14:33:26
回答 1查看 28关注 0票数 1

我最近发现了iPython魔术函数,并编写了一些自定义魔术。我想使用单元格魔术来解析字符串,稍微修改它们并返回结果。是否有方法将我的自定义单元格魔术函数的输出存储在变量中?

我知道您可以存储像这样的行魔术函数的输出:

代码语言:javascript
复制
@register_line_magic
def linemagic(line, cell=None):
    #do something
    return line

hello = %linemagic hello
print(hello)

返回:

代码语言:javascript
复制
>>> hello

如果我有更大的字符串,我想使用单元格魔术代替:

代码语言:javascript
复制
@register_cell_magic
def cellmagic(line, cell=None):
    #do something
    return cell

不可能使用hello = %%cellmagic ...来存储结果。还有另一种方法来捕获函数输出吗?

EN

Stack Overflow用户

回答已采纳

发布于 2022-12-02 09:07:45

您可以使用IPython的输入/输出缓存系统

输出缓存:

  • _ (一个下划线):存储以前的输出,比如Python的默认解释器。
  • __ (两个下划线):下一个。
  • ___ (三个下划线):下一个-下一个。
  • _n (n是提示计数器):输出结果
  • 实际上,_4Out[4]_oh[4]都做同样的事情

同样,对于输入缓存:

  • _i_ii_iii:存储前输入、下一个输入和下一个输入。
  • _i4_ih[4]In[4]:输入<n> (例如4)的内容
代码语言:javascript
复制
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'
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74643538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档