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__构造函数方法混淆,前者时为了导入初次遍历一个包目录时所运行的代码的文件,后者在创建实例的时候使用。

猜你喜欢

转载自www.cnblogs.com/qiutian-guniang/p/10995422.html
今日推荐