模块和包

# 模块

Python 模块是一组相关的函数、类、变量等的集合,它们被封装在一个单独的文件中,以便在 Python 应用程序中进行重用。模块可以在其他 Python 文件中被导入并使用。

Python 模块可以分为两种类型:

  • 内置模块:Python 自带了一些模块,比如 math、random、os、sys 等,可以直接导入并使用。
  • 第三方模块:由其他开发者编写并共享的 Python 模块,比如 numpy、pandas、requests 等。需要先安装才能导入并使用。

下面是一个简单的示例,展示如何导入一个 Python 模块:

# 导入 math 模块
import math

# 使用 math 模块中的函数
print(math.sqrt(16))  # 输出 4.0
1
2
3
4
5

在这个示例中,import math 语句将 math 模块导入到程序中,并且我们使用 math.sqrt() 函数计算 16 的平方根。

# 导入模块

在 Python 中,导入模块可以使用 import 关键字。一般有以下几种写法:

  • 导入整个模块:
import module_name

# 在这种情况下,你可以通过 module_name 访问该模块中的所有函数、类和变量,例如 module_name.function_name()
1
2
3
  • 导入模块中的特定函数或变量
from module_name import function_name, variable_name

# 在这种情况下,你只能访问 function_name 和 variable_name 这两个变量或函数,而不能访问该模块中的其他函数和变量。
1
2
3
  • 导入模块中的所有函数和变量
from module_name import *

# 在这种情况下,你可以访问该模块中的所有函数和变量。但是,使用这种方式可能会导致命名冲突和代码不可读性问题,因此不建议在生产环境中使用。

# 另外,如果你想给导入的模块指定一个别名,可以使用 as 关键字,例如:

import module_name as mn

# 这样,你可以使用 mn 代替 module_name 访问该模块中的所有函数和变量。

from module_name import function_name as fm
1
2
3
4
5
6
7
8
9
10
11
# 导入math模块
import math
# 将导入的模块起个别名
import math as mymath
# 从math模块导入
from math import *
# 从math模块导入sqrt方法
from math import sqrt
# 从模块math导入功能1,功能2
from math import sqrt, sin
# 从模块导入sqrt功能并起别名
from math import sqrt as sqrt1

print(sqrt(9))
print(sin(30))
print(sqrt1(16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 了解制作模块

要制作一个Python模块,可以按照以下步骤进行:

  • 创建一个文件夹,命名为模块的名字。
  • 在文件夹中创建一个Python文件,命名为__init__.py,这是必须的,因为它告诉Python这个文件夹是一个Python包。
  • 在__init__.py文件中编写代码,定义你的模块所包含的函数和变量。
  • 创建其他的Python文件,用于存放其他的函数和类,以及数据文件等。
  • 在其他Python文件中,通过import语句导入__init__.py中定义的函数和变量。
  • 将整个文件夹打包成一个压缩文件,可以使用.tar.gz或.zip格式。

以下是一个简单的示例:

# 在模块文件夹中的__init__.py文件中定义函数
def greet(name):
    print(f"Hello, {name}!")

# 在其他Python文件中导入模块
from my_module import greet

# 使用模块中的函数
greet("John")
1
2
3
4
5
6
7
8
9

在上面的例子中,我们定义了一个greet()函数,并将其放在了__init__.py文件中。然后,在另一个Python文件中,我们通过from my_module import greet语句导入了这个函数,并使用它来打印出问候语。

注意,如果你想在模块外部使用这个模块,你需要将模块所在的文件夹添加到Python的搜索路径中。可以通过设置PYTHONPATH环境变量来完成这个操作,或者将模块所在的文件夹复制到Python的site-packages文件夹中。

# __name__

在 Python 中,__name__ 是一个特殊的变量,它用于获取当前模块的名称。

当我们执行一个 Python 文件时,Python 解释器会把这个文件作为一个模块来处理。在这个模块中,__name__ 的值为 __main__。这是因为在 Python 中,每个模块都有一个名称,而当一个模块被执行时,它的名称就变成了 __main__

举个例子,假设我们有一个名为 example.py 的 Python 文件,它的内容如下

def my_function():
    print("Hello, world!")

if __name__ == "__main__":
    my_function()
1
2
3
4
5

在这个例子中,我们定义了一个名为 my_function 的函数,并且在 if __name__ == "__main__": 的条件下调用了这个函数。这个条件语句的作用是,当这个文件被执行时(而不是被导入到其他文件中),就会调用 my_function 函数。

这种写法的好处是,我们可以将这个文件作为模块导入到其他文件中使用,而不会执行 my_function 函数。这样就可以保证我们的代码不会出现重复执行的问题。

# 模块定位顺序

Python 模块的定位顺序遵循以下规则:

  • 程序的主目录(也就是脚本所在目录)。
  • 环境变量 PYTHONPATH 所包含的所有目录。
  • Python 安装目录下的 lib/pythonX.X/site-packages 目录(X.X 表示 Python 版本号)。

提示

  • 模块名不要重复。
  • 当使用 from xx模块 import xx功能 导入模块的功能的时候,如果功能名字重复,导入的是后定义的或者后导入的这个同名功能。
  • 使用 import xx模块 导入的功能有重复,但是只要模块名不重复也可以。
  • 变量名也可以覆盖模块名。

# __all__变量

在 Python 中,__all__ 是一个特殊的变量,用于控制导入模块时哪些名称可以被导入。当一个模块被导入时,Python 解释器会检查该模块的 __all__ 变量,并且只有被列在 __all__ 中的名称才会被导入。使用这种导入模块的时候生效 from my_modual import *__all__ 是一个包含字符串的列表,每个字符串表示一个可以被导入的名称。例如,一个模块的 __all__ 变量可以如下所示:

__all__ = ['foo', 'bar', 'baz']
1

这意味着只有在导入该模块时显式请求 foo、bar 或 baz 时,它们才会被导入到当前的命名空间中。如果尝试导入该模块的其他名称,Python 解释器会抛出一个 NameError 异常。 使用 __all__ 变量可以帮助程序员明确地指定哪些名称应该被导入,避免意外的名称冲突和命名空间污染。

#

Python 包是一种模块化组织和共享代码的方式。它是一组相关模块和子模块的集合,提供了一种方便的方法来组织、重用和分发代码。Python 包通常由一个顶级包和一个或多个子包组成,每个子包都是一个包含 Python 模块的文件夹。

在 Python 中,你可以使用 pip(Python 包管理器)来安装和管理许多可用的第三方包,也可以创建自己的包来共享代码。一些常见的 Python 包包括 NumPy、Pandas、SciPy、Matplotlib 和 Scikit-learn 等,它们提供了广泛使用的数据分析、科学计算和机器学习工具。

要使用一个 Python 包,需要先安装它,然后可以使用 import 语句将其导入到你的 Python 脚本中,以便使用其中的函数、类和变量。例如,要导入 NumPy 包,可以使用以下语句:

import numpy as np
1

这将导入 NumPy 包并将其命名为“np”,以便在你的代码中使用。

# 导入包

要在 Python 中导入一个包,你可以使用 import 关键字后跟包的名称。例如,要导入 numpy 包,可以使用以下代码:

import numpy
1

这将导入整个 numpy 包,使其所有的函数和类都可以在你的代码中使用。如果你只需要使用 numpy 中的特定函数或类,你可以使用以下代码:

from numpy import <function/class name>
1

例如,要导入 numpy 中的 array 函数,可以使用以下代码:

from numpy import array
1

你还可以使用 as 关键字为包或函数指定别名。例如,以下代码将 numpy 包重命名为 np:

import numpy as np
1

这使得你可以使用更短的名称来引用 numpy 包中的函数和类。例如,你可以使用以下代码来创建一个 numpy 数组:

import numpy as np
my_array = np.array([1, 2, 3])
1
2
import my_utils.my_modual1
import my_utils.my_modual2

my_utils.my_modual1.info_print1()
my_utils.my_modual2.info_print2()
1
2
3
4
5
上次更新: 2025/02/10, 20:20:37
最近更新
01
Git问题集合
01-29
02
安装 Nginx 服务器
01-25
03
安装 Docker 容器
01-25
更多文章>
×
×