【问题标题】:IPython, semicolon to suppress output does not workIPython,分号抑制输出不起作用
【发布时间】:2011-11-21 23:30:53
【问题描述】:

http://ipython.org/ipython-doc/dev/interactive/tips.html 的文档中,它说在命令末尾放置一个分号 (;) 以抑制其输出。这在我的情况下似乎不起作用,即使是

>>> \>>> print('Hello');  
--> 'Hello'

我对输出抑制有错误的想法还是这是一个错误?这在 pudb 中工作时尤其烦人,因为在我的情况下,当我按下“下一步”或“进入”时,它会闪烁得可怕。

P.S 输出既不在我的 ubuntu ipython 0.10 上,也不在 osx lion ipython 0.11 上被抑制。虽然在osx中​​闪退问题更严重,可能是因为item2。

【问题讨论】:

    标签: ipython suppression


    【解决方案1】:

    试试1 + 1;。如果没有分号,它应该通过打印它来给你关于结果的反馈(格式为repr,尽管在整数的情况下并不重要)——我认为应该抑制的是这个输出。 shell 不会(也不应该)禁止写入碰巧被sys.stdout 引用的文件(这实际上是print 所做的)。这是完全不同的事情,而不是 shell 的工作。

    【讨论】:

    • 只是为了确认一下,delnan 在这点上是完全正确的 - 这是一个表达式的结果,你可以压制,而不是打印。
    • 感谢您快速简洁的回答,尽管我很失望它没有达到我希望的效果,但我很感谢您解决了这个问题。
    【解决方案2】:

    添加%%capture 作为单元格的第一行。例如

    %%capture
    print('Hello')
    

    这只是丢弃输出,但%%capture 魔法可用于将输出保存到变量 - consult the docs

    【讨论】:

      【解决方案3】:

      这是来自Dataquest — 28 Jupyter Notebook tips, tricks, and shortcuts 帖子的另一个示例:

        # Use a semicolon to suppress the output of a final function.
        %matplotlib inline
        from matplotlib import pyplot as plt
        import numpy
        x = numpy.linspace(0, 1, 1000)**1.5
        plt.hist(x); # Output not suppressed w/ semicolon?
      

      还有一个“工作”分号抑制的例子:

      x = 1 + 1
      x; # Output suppressed w/ semicolon!
      

      所以它似乎抑制了通常显示在终端中的语句,但不是“内联”类型,如绘图。

      【讨论】:

        猜你喜欢
        • 2017-11-02
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 2016-03-07
        • 2016-10-08
        相关资源
        最近更新 更多