首先理解下python程序的运行机制

请添加图片描述

总之,一个.py文件肯定是不能直接运行的,python会先将其编译为pycodeObject,然后再送入虚拟机执行。

所以这个问题大概可分为两种情况

情况一:还没有导入某个包,但是修改掉了代码,那么执行到这里的代码时,就是修改之后的了。

情况二:已经导入的包,在执行过程中修改其代码,不受影响。

测试代码

情况1

#main.py
if __name__ == '__main__':
    import time
    time.sleep(10)
    import unit_test.pythoninterpreter.modul_1 as module
    module.show()
#modul_1.py
print('has import')
def show():
    print('show show show')

先运行main.py,然后再修改modul_1.py
结果如下

has import
show show show666

情况2

如果改成这个样子,修改modul_1.py 就没有作用了,因为module早就被导入了,也就是已经被编译了,就不会再次编译了

if __name__ == '__main__':
    import time
    import unit_test.pythoninterpreter.modul_1 as module
    while True:
        module.show()
        time.sleep(2)
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐