python3之使用exec运行模块文件
----------
实际上,还有更多的方法可以运行模块文件中保存的代码。例如, exec(open('module.py').read()) 内置函数调用,是 从交互提示模式启动文件而不必导入以及随后的重载的一种方法。 每次exec都运行 文件的最新版本 。
exec调用有着类似于import的效果,但是,它从技术上不会导入模块,默认情况下,每次以这种方式调用 exec的时候,它都重新运行文件, 就好像我们把文件粘贴到了调用exec的地方 。因此, exec不需要在文件 修改后进行模块重载 ,它忽略了常规的模块导入逻辑。
缺点是,由于exec的工作机制就好像在调用它的地方粘贴了代码一样, 和前面提到的from一样 ,对于当前 正在使用的变量 有潜在的默认覆盖的可能 。
----------
实际上,还有更多的方法可以运行模块文件中保存的代码。例如, exec(open('module.py').read()) 内置函数调用,是 从交互提示模式启动文件而不必导入以及随后的重载的一种方法。 每次exec都运行 文件的最新版本 。
exec调用有着类似于import的效果,但是,它从技术上不会导入模块,默认情况下,每次以这种方式调用 exec的时候,它都重新运行文件, 就好像我们把文件粘贴到了调用exec的地方 。因此, exec不需要在文件 修改后进行模块重载 ,它忽略了常规的模块导入逻辑。
缺点是,由于exec的工作机制就好像在调用它的地方粘贴了代码一样, 和前面提到的from一样 ,对于当前 正在使用的变量 有潜在的默认覆盖的可能 。
相反,基本的import语句每个进程只运行文件一次,并且它会把文件生成到一个单独的模块名称空间中,以 便它的赋值不会改变你的作用域中的变量。为模块名称空间分隔所付出的代价是,在修改之后需要重载。