python文件在引入其他模块后的执行流程和变量作用域问题理解

发布于 2023-07-18 16:51:14
浏览量
5785
1 个回答
猫哥
猫哥 项目组成员 2023-07-18
希望我的回答能对你有所帮助

首先需要明确几点:

  1. python代码从上到下顺序执行。
  2. 作用域遵循 局部》嵌套》全局》内置 的最近查找原则, 最近找不到就到上层查找。
  3. 只有模块-module 类-class 函数-def才会引入新的作用域。
  4. 内部作用域变量想要修改全局作用域下的变量使用global关键字,修改嵌套作用域下的变量使用nonlocal关键字
  5. 内部变量在赋值前引用是会报错的{比如:def a():print(x);x=5;},可以使用global/nonlocal关键词先申明。
  6. 使用引用类型的变量是会达到全局变量的效果的,内层修改,外层数据也会发生变化,因为它引用的是变量的内存地址。
  7. 模块、类、函数只有在引用的时候才会执行,但是module、类中的静态代码会立即执行。
  8. from或import模块,会先执行它的__init__.py文件
  9. init__.py文件中的__all 列表表示只对外开放的模块。
  10. 模块文件的查找规则根据sys.path列出的顺序查找,通常是当前脚本目录、类库、系统环境类库(通过sys.modules查看导入了哪些模块)
  11. 一个文件夹就是一个包,文件夹内的每个文件就是一个module. 文件夹内的__init__.py是包的初始化脚本,def __init__(self) 是模块中类的初始化方法。

__init__.py文件执行,依照模块导入查找规则导入模块文件。

模块会优先执行它的初始化方法和静态代码
可以导入整个模块,也可以只导入模块下的某些个类
执行类实例化的时候优先执行初始化方法。

学习
记录

发布
问题

分享
好友

手机
浏览

扫码手机浏览