【问题标题】:IPython - importing/populating namespace with custom magicIPython - 使用自定义魔法导入/填充命名空间
【发布时间】:2015-04-26 05:00:37
【问题描述】:

IPython 中的%pylab 魔术将一堆函数导入用户的工作区,非常方便。查看代码,它是如何完成的并不明显。到目前为止,我的启动文件夹中有一个神奇的功能:

from IPython.core.magic import register_line_magic

@register_line_magic
def import_my_functions(line):
    """
    Import functions into namespace somehow....
    e.g. import numpy as np
    """

那么应该是可以的:

In[1]: %import_my_functions
 imported the following:
   numpy as np
   .....
In[2]: np
Out[2]: <module 'numpy' from ..../venv/lib/python2.7/site-packages/numpy/__init__.pyc'>

如果该命令还重新加载更改的模块,则奖励将是。

【问题讨论】:

    标签: ipython ipython-notebook ipython-magic


    【解决方案1】:

    建议 1:Don't 使用 %pylab

    建议 2:不要试图模仿 pylab 的用法,它会咬你的

    如果您想方便导入,请创建自己的包并执行from mypackage import *

    如果你真的想要一个可以访问 python 命名空间的魔法,你应该看到this question。并添加 @needs_local_scope 装饰器。

    【讨论】:

    • 我一直在使用from mypackage import *,但它缺少某些东西。 (1) 它不能重新加载改变的模块。 (2)它不会让我根据参数定义不同的东西(例如,我想根据我是否指定内联绘图来不同地定义“重绘”函数。(3)我不能调用其他来自导入的魔法(如神秘的%matplotlib inline)。
    • 虽然对于 (1) 来说足够公平,但您可能有一个接受参数、上升一帧并修改全局变量的函数。但这可能有点太老套了。
    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 2018-05-30
    • 2020-09-09
    • 1970-01-01
    • 2010-09-16
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多