python基础之 运行程序(reload import exec)
Posted qiutian-guniang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础之 运行程序(reload import exec)相关的知识,希望对你有一定的参考价值。
exec 在使用exec执行脚本的时候,要注意,变量覆盖的问题
比如:在执行文件script.py之前,有一个 x=0的变量赋值,但是在script文件中也使用到了变量x,那么在执行exec(open("script.py").read())之后,x的值将会被覆盖
原因:exec在运行文件,就像是把文件粘贴复制到代码的执行的位置,不需要重载修改后的文件,所以会有正在使用的变量被覆盖的风险
除了 exec 之外,import 和 from其实也可以去运行我们的代码(不用来执行这样的程序)
在实际中,我们不会使用from 和 import去执行我们的程序,import 和 from 导入包的时候使用。
我们使用 from dir1.dir2.file_name import mode 或者是 import dir1.dir2.file_name 这样的方式来导入我们需要的模块或者是某一个变量。
在使用的时候,要求dir1 dir2这两个目录中必须要有__init__.py的文件,否则导入会报错,无法正常使用,使用编译器比如pycharm创建一个新的package就会自动给创建一个__init__.py文件。
代码工程的主目录不需要__init__文件,即使有也会被忽略。
__init__文件中可以有程序代码,你可以使用它进行模块的初始化,当然它也可以是一个空文件,主要承担包初始化钩子,目录产生模块命名空间,使用目录导入时实现from *行为的角色。
当然不要把包中的__init__文件和 类中__init__构造函数方法混淆,前者时为了导入初次遍历一个包目录时所运行的代码的文件,后者在创建实例的时候使用。
以上是关于python基础之 运行程序(reload import exec)的主要内容,如果未能解决你的问题,请参考以下文章
基础入门_Python-模块和包.setdefaultencoding前为何要reload(sys)?
错误记录执行 Python 程序报错 ( NameError: name ‘reload‘ is not defined )