📜  Python包

📅  最后修改于: 2022-05-13 01:55:18.694000             🧑  作者: Mango

Python包

我们通常根据一些标准将我们的文件组织在不同的文件夹和子文件夹中,以便可以轻松有效地管理它们。例如,我们将所有游戏保存在 Games 文件夹中,我们甚至可以根据游戏类型或类似内容进行子分类。 Python包遵循相同的类比。

一个Python模块可能包含多个类、函数、变量等,而一个Python包可以包含多个模块。简而言之,包是包含各种模块作为文件的文件夹。

创建包

让我们创建一个名为 mypckg 的包,其中包含两个模块 mod1 和 mod2。要创建此模块,请按照以下步骤操作 -

  • 创建一个名为 mypckg 的文件夹。
  • 在这个文件夹中创建一个空的Python文件,即 __init__.py
  • 然后在此文件夹中创建两个模块 mod1 和 mod2。

模组1.py

Python3
def gfg():
    print("Welcome to GFG")


Python3
def sum(a, b):
    return a+b


Python3
from .mod1 import gfg
from .mod2 import sum


Python3
from mypckg import mod1
from mypckg import mod2
 
mod1.gfg()
res = mod2.sum(1, 2)
print(res)


Python3
from mypckg.mod1 import gfg
from mypckg.mod2 import sum
 
gfg()
res = sum(1, 2)
print(res)


模组2.py

Python3

def sum(a, b):
    return a+b

我们包的层次结构如下所示——

mypckg
|
|
---__init__.py
|
|
---mod1.py
|
|
---mod2.py

理解 __init__.py

__init__.py 帮助Python解释器将文件夹识别为包。它还指定要从模块中导入的资源。如果 __init__.py 为空,则意味着将导入模块的所有功能。我们还可以指定每个模块的功能可用。

例如,我们还可以为上述模块创建 __init__.py 文件:

__init__.py

Python3

from .mod1 import gfg
from .mod2 import sum

这个 __init__.py 将只允许从 mod1 和 mod2 模块导入 gfg 和 sum 函数。

从包中导入模块

我们可以使用 from...import 语句和 dot(.)运算符来导入这些模块。

句法:

import package_name.module_name

示例:从包中导入模块

我们将从上面创建的包中导入模块,并使用这些模块中的函数。

Python3

from mypckg import mod1
from mypckg import mod2
 
mod1.gfg()
res = mod2.sum(1, 2)
print(res)

输出:

Welcome to GFG
3

我们也可以使用相同的语法导入特定的函数。

示例:从模块导入特定函数

Python3

from mypckg.mod1 import gfg
from mypckg.mod2 import sum
 
gfg()
res = sum(1, 2)
print(res)

输出:

Welcome to GFG
3