原理是基于的开发文档,模块导入主要包括以下步骤:新建一个空对象,可以包含多个对象,将这个对象插入。如果需要加载的代码,必须先编译并执行新代码中的相应代码。所以您可以将初始化代码放在这个文件中。
@
当python在github上开始啃python代码的时候,它发现了很多知其然不知其所以然的代码,开始疯狂追赶。???
包指南包用处1:导入包比如这个架构:
包1/ --子包1/ -- __init__。py --module _ 11 . py --module _ 12 . py --module _ 13 . py --sub B2/--_ _ init _ _ . py--module _ 21 . py--module _ 22 . py...如果要将module_11.py的类或函数导入module _ 21.py,需要包含_ _ init _ _。子包中的py,即使_
2.原理根据python的开发文档,模块导入主要包括以下步骤:1。创建一个新的空模块对象(可能包含多个模块)2。将此模块对象插入sys.module 3。加载模块的代码(如果需要,必须先编译)4。在新模块中执行相应的代码。执行步骤3时,首先找到模块程序的位置,搜索顺序如下
1.在当前路径和当前目录中指定sys.path。2.从环境变量PYTHONPATH开始搜索。3.设置与3.python安装相关的默认路径。
如果当前路径或PYTHONPATH中有与标准模块相同的模块,它将覆盖标准模块。也就是说,如果当前目录下有xml.py,执行导入xml.py时,会导入当前目录下的模块,而不是系统标准的xml。这就是问题所在。你怎么知道在哪里可以找到这些模块?有些文件夹我想被搜索,有些我不想被搜索。这里,文件__init__。需要py。如果文件夹下有这个文件,默认是一个包,可以搜索。这是__init__.py的用途之一。
2:简化包的导入。例如,有一个python文件依赖于上述所有文件:
从包1 .子包1导入模块_ 11从包1 .子包1导入模块_ 12从包1 .子包1导入模块_ 21从包1 .子包2导入模块_ 22。subpack2 import module _ 23在这个例子中有几个文件。如果模块很大,目录很深,您可能不记得如何导入它。在这种情况下,__init__。py很有用。让我们先来看看这个文档是如何工作的。实际上,如果目录包含__init__。py,用import导入目录时,__init__中的代码。py将首先被执行。
我们添加一个__init__。将文件复制到package1目录:
程序包1/ -- __init__。py -- subPack1/ -- __init__。py --module _ 11 . py --module _ 12 . py --module _ 13 . py --sub B2/--_ _ init _ _ . py--module _ 21 . py--module _ 22 . py...如果在_ _ init _ _中打印单词print(“package 1已加载”)。py,然后用python导入包。
> > python > > import package 1 package 1加载了控制模块导入,这样我们就可以在__init__中导入所需的文件包。py: from package 1.subpack导入module _ 11然后用python导入整个包:import p. ACK1如果要导入package 1下整个文件夹下的包,那就偷懒:from package1 import *这就引出了另一个问题。为什么*可以导入所有模块?它涉及到一个变量__all__(稍后在此添加)。综上所述,在了解__init__之后。py工程,你应该能理解这个文件是一个普通的python代码文件。所以您可以将初始化代码放在这个文件中。
评论前必须登录!
注册