关注分享主机优惠活动
国内外VPS云服务器

Python开发] 1。 __init__.py和指南袋

总结:按照开发文档的原则,导入模块主要有以下几个步骤: 创建一个新的空对象。 这可能包含多个对象。 将该对象插入那里。 如有必要,必须首先编译并执行加载的代码。 对应的代码。 所以你可以把你的初始化代码放在这个文件中。

@

python开发

当我开始在github上查看Python代码时,我发现很多代码我知道它在做什么,但不知道它为什么这样做塔。 我开始疯狂地填补空白。 ???

使用包导入包1:导入包

例如,对于此架构:

package1/ -- subPack1/ -- __init__.py [ k4] ][ k4] module_11.py -- module_12.py -- module_13.py --subPack2/ -- __init__.py -- module_21.py -- module_22.py ……

添加 module_11.py 的类和函数module_21。如果你想将其导入到py中,那么即使__init__.py为空,subPack1也有__init__.py。 必须包括在内。 否则会报模块未找到错误。

2.原理

根据Python开发文档,导入一个模块主要涉及以下几个步骤: 1. 创建一个新的空模块对象(可能包含多个模块) 2. 放置这个模块ule 对象被插入到 sys.module 中。 3. 加载模块代码(如有需要,可能需要先编译) 4. 在新模块中运行相应的代码。 执行步骤3时,首先需要找到模块程序。 搜索顺序是:

1. sys.path 指定为当前路径和当前 2. 从环境变量 PYTHONPATH 中搜索 3. 与 python 安装设置相关的默认路径

当前路径或 PYTHONPATH 中的相同模块 如果它被用作标准模块,它会覆盖标准模块。 换句话说,如果当前存在xml.py,则导入将被执行。 xml.py 导入当前中的模块而不是系统标准 xml。 现在的问题是,我怎样才能知道这些模块在哪里? 有一些您想要搜索的文件夹,以及一些您不想搜索的文件夹。 我们这里需要一个 __init__.py 文件。 您将在该文件夹下找到该文件。 默认情况下,文件夹是包并且是可搜索的。 这是 __init__.py 的一种用途。

用途 2:简化包导入

例如,我有一个依赖于上述所有文件的 Python 文件。

from package1.subPack1 import module_11from package1.subPack1 import module_12from package1.subPack1 import module_21from package1 .subPack2 import module_22from package1.subPack2 import module_23

此示例的文件数量相对较少。 如果你的模块很大并且很深,你可能不记得如何导入它。 在这种情况下,__init__.py 很有用。 首先,让我们看看这个文件是如何工作的。 事实上,如果一个包含 __init__.py,使用 import 导入该将导致录制时,__init__.py 中的代码优先。

添加__init__.py文件。

- __init__.py - subpack1/ - - __init___ .py - - module_11.py - ] - module_12.py - - module_13 .py - - subpack2/ - - _init__.py - - module_21.py - - module_22.py ...

如果在 __init__.py 中的一个语句内,有语句 (``Package 1 has been returned'' ),则 Python

> Python >> 在 Import Package1 下导入包。 Package1已经加载了控制模块来导入

,因此可以将其导入到__init__.py中。 选择 Package1.Subpack Module_11 并在 Python 中导入整个包。 iming Port Package1 如果想导入Package1下整个文件夹下的包就偷懒了: From Package1 Import * 这里又出现一个问题。 为什么 * 可以导入到每个模块中,包括变量 __ALL __ (这里是尾随补码)。 一旦了解了 __init__.py 的工作原理,您就应该明白该文件是一个常规的 Python 代码文件。 所以你可以将初始化代码放在一个文件中。

未经允许不得转载:主机频道 » Python开发] 1。 __init__.py和指南袋

评论 抢沙发

评论前必须登录!