show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次研究了python类库的来源
- 系统内置
- 类库目录
- 自定义的PYTHONPATH
- 通过自定义的PYTHONPATH
- 把一些自己指定的程序放到自己指定的位置
- 甚至打成一个类库包
- oeasy可以引用(import)o2z
- o2z也可以引用(import)oeasy
- 如何区分当前的py文件是
- 引入的模块
- 还是主控的程序呢🤔
- oeasy作为主程序的时候
__name__
变量的值是__main__
- 注意这里是两个下划线
- 如果oeasy作为一个被引入的模块呢?
- oeasy作为一个被引入的模块时
__name__
变量的值是oeasy
- 而不是
__main__
- 什么是
__name__
呢?
- 观察
__name__
和__doc__
、__builtins__
一样- 是全局变量
- 通过
__name__
这个变量的值 - 我们可知道当前py文件是不是主模块(或者说入口模块)
- 或者说是顶级代码环境
- 如何理解这个顶级呢?
- 顶级的就是说这个模块是我们用python直接运行的
- 别的都是运行过程中
- 直接或者间接被顶级模块调用的模块
- 别的都是运行过程中
- 判断
__name__
属性是否为__main__
- 如果结果True
- 就是顶级代码级别
- 就是要直接运行当前文件
- 就执行
if __name__ == '__main__'
中的代码
- 如果结果False
- 就不是顶级代码级别
- 就是要把当前文件作为模块导入
- 就不执行
if __name__ == '__main__'
中的代码
- 如果模块名是个文件夹会如何呢?
- 可以自制模块
__main__.py
就是模块的入口地址
__main__
可以是具体的py文件
__main__.py
就是模块的入口地址- 这个和
__init__.py
有什么不同呢? - 对于文件夹来说
- 先初始化
__init__.py
- 然后运行
__main__.py
- 先初始化
- 如果导入这个模块
- 初始化
__init__.py
- 不运行
__main__.py
- 初始化
- 再仔细看看例程
- 通过判断
__main__==__name__
- 有些代码是只有顶级的时候才执行的
- 作为导入模块不需要执行这些代码
- 比如图中的sys.exit
- 这个sys.exit是什么意思呢?
- 退出当前的程序
- 接受一个数字作为整个程序的返回值
- 这个sys.exit到底返回了什么?
- 我们这次了解了python文件引用的层级关系
- 最高级的模块的
__name__
是__main__
- 可以根据这个进行模块是否为顶级的判断
- 最高级的模块的
- 自制模块文件夹
__main__.py
就是模块主程序的入口地址
-
- sys.exit函数
- 可以直接跳出当前python执行的进程
- 并返回一个数值
- sys.exit函数
- sys.exit到底怎么用呢?🤔
- 我们下次再说👋