发布网友 发布时间:2022-04-21 17:51
共3个回答
热心网友 时间:2023-06-29 22:56
初始化就是程序运行前将某些特定的数据恢复至默认值,达到一个最原始状态。
1.根据 __main__ 被初始化的方式,__main__.__spec__ 会被设置相应值或是 None。
当 Python 附加 -m 选项启动时,__spec__ 会被设为相应模块或包的模块规格说明。 __spec__ 也会在 __main__ 模块作为执行某个目录,zip 文件或其它 sys.path 条目的一部分加载时被填充。
2.在 其余的情况 下 __main__.__spec__ 会被设为 None,因为用于填充 __main__ 的代码不直接与可导入的模块相对应:
交互型提示,-c 选项
从 stdin 运行
直接从源码或字节码文件运行
3.请注意在最后一种情况中 __main__.__spec__ 总是为 None,即使 文件从技术上说可以作为一个模块被导入。 如果想要让 __main__ 中的元数据生效,请使用 -m 开关。
还要注意即使是在 __main__ 对应于一个可导入模块且 __main__.__spec__ 被相应地设定时,它们仍会被视为 不同的 模块。 这是由于以下事实:使用 if __name__ == "__main__": 检测来保护的代码块仅会在模块被用来填充 __main__ 命名空间时而非普通的导入时被执行。
5.9. 开放问题项
XXX 最好是能增加一个图表。
4.XXX * (import_machinery.rst) 是否要专门增加一节来说明模块和包的属性,也许可以扩展或移植数据模型参考页中的相关条目?
XXX 库手册中的 runpy 和 pkgutil 等等应该都在页面顶端增加指向新的导入系统章节的“另请参阅”链接。
XXX 是否要增加关于初始化 __main__ 的不同方式的更多解释?
XXX 增加更多有关 __main__ 怪异/坑人特性的信息 (例如直接从 PEP 395 复制)。
5.当 Python 附加 -m 选项启动时,__spec__ 会被设为相应模块或包的模块规格说明。__spec__ 也会在 __main__ 模块作为执行某个目录,zip 文件或其它 sys.path 条目的一部分加载时被填充。
在 其余的情况 下 __main__.__spec__ 会被设为 None,因为用于填充 __main__ 的代码不直接与可导入的模块相对应:
交互型提示,-c 选项
从 stdin 运行
6.直接从源码或字节码文件运行
请注意在最后一种情况中 __main__.__spec__ 总是为 None,即使 文件从技术上说可以作为一个模块被导入。 如果想要让 __main__ 中的元数据生效,请使用 -m 开关。
还要注意即使是在 __main__ 对应于一个可导入模块且 __main__.__spec__ 被相应地设定时,它们仍会被视为 不同的 模块。 这是由于以下事实:使用 if __name__ == "__main__": 检测来保护的代码块仅会在模块被用来填充 __main__ 命名空间时而非普通的导入时被执行。
5.9. 开放问题项
热心网友 时间:2023-06-29 22:56
初始化就像是计算机程序在做准备工作,他把最初的环境打好,然后开始工作进入工作状态。热心网友 时间:2023-06-29 22:57
初始化在计算机编程领域中指为数据对象或变量赋初值的做法,如何初始化则取决于所用的程序语言以及所要初始化的对象的存储类型等属性。用于进行初始化的程序结构则称为初始化器或初始化列表。初始化和变量声明是有明显区别的,而且变量声明也先于初始化进行,但两者在实践中仍常被混淆。