python模块中的更改不起作用?

python模块中的更改不起作用?,python,module,anaconda,python-3.6,Python,Module,Anaconda,Python 3.6,我有两个python文件,一个正在调用(导入)另一个。但是,当我在调用的模块中进行更改时,除非我退出Python并重新打开它,否则不会应用更改。然后我可以看到变化正在起作用。下面是一个简短的例子: mainfile.py: from otherfile import myfunc a=5 myfunc(a) otherfile.py: def myfunc (x): print(x+3) 当我运行mainfile.py时,它会按预期打印8。但是当我将otherfile.py中的最后一

我有两个python文件,一个正在调用(导入)另一个。但是,当我在调用的模块中进行更改时,除非我退出Python并重新打开它,否则不会应用更改。然后我可以看到变化正在起作用。下面是一个简短的例子:

mainfile.py:

from otherfile import myfunc
a=5
myfunc(a)
otherfile.py:

def myfunc (x):
    print(x+3)
当我运行mainfile.py时,它会按预期打印8。但是当我将otherfile.py中的最后一行更改为print(x+4)并保存它时,运行mainfile.py仍然会打印8!退出Python并重新输入后,现在它将打印9

我在谷歌上搜索了这个问题,但什么也找不到。有些人谈论“init”,我不知道它是什么。我对Python非常陌生,因此如果您能以非常基本的方式对此进行解释,我将不胜感激

谢谢


注意:我在Anaconda 4.4.0和Spyder 3.1.4上使用Python 3.6.1,如果检测到模块已更改,则只有在第一次使用后才会重新执行模块级Python代码(触摸模块-即更改其mod.time-似乎足以使其工作)。事实上,这使得很多senseI发现Spyder在默认情况下每次运行代码时都会进行新的导入。可能会在更改后删除
.pyc
文件。这里建议使用更好的方法,如果检测到模块已更改,则只有在首次使用后才重新执行模块级python代码(触摸模块-即更改其mod.time-似乎足以使其工作)。事实上,这使得很多senseI发现Spyder在默认情况下每次运行代码时都会进行新的导入。可能在更改后删除
.pyc
文件。这里建议使用更好的方法,