how to “reimport” module to python then code be changed after import

前端 未结 4 711
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-02 12:37

I have a foo.py

def foo():
    print \"test\"

In IPython I use:

In [6]:  import foo
In [7]:  foo.foo()
test


        
相关标签:
4条回答
  • 2020-12-02 13:14

    In addition to gnibbler's answer:

    This changed in Python 3 to:

    >>> import imp
    >>> imp.reload(foo)
    

    As @onnodb points out, imp is deprecated in favor of importlib since Python 3.4:

    >>> import importlib
    >>> importlib.reload(foo)
    
    0 讨论(0)
  • 2020-12-02 13:22

    IPython3's autoreload feature works just right.

    I am using the actual example from the webpage. First load the 'autoreload' feature.

    In []: %load_ext autoreload
    In []: %autoreload 2
    

    Then import the module you want to test:

    In []: import foo
    In []: foo.some_function()
    Out[]: 42
    

    Open foo.py in an editor and change some_function to return 43

    In []: foo.some_function()
    Out[]: 43
    

    It also works if you import the function directly.

    In []: from foo import some_function
    In []: some_function()
    Out[]: 42
    

    Make change in some_function to return 43.

    In []: some_function()
    Out[]: 43
    
    0 讨论(0)
  • 2020-12-02 13:25

    If you want this to happen automatically, there is the autoreload module that comes with iPython.

    0 讨论(0)
  • 2020-12-02 13:37

    For Python 2.x

    reload(foo)
    

    For Python 3.x

    import importlib
    import foo #import the module here, so that it can be reloaded.
    importlib.reload(foo)
    
    0 讨论(0)
提交回复
热议问题