Python核心语法——模块
2026/7/6 5:47:03 网站建设 项目流程

一、什么是模块?有什么用?

模块(module):一个.py文件就是一个模块,模块是 Python 程序的基本组织单位。在模块中可以定义变量、函数、类,以及可执行的代码。

作用

  • 提高代码复用性

  • 降低开发门槛

  • 避免命名冲突

原课件核心表述:

模块:就是一个 python 文件 (.py),其中就包含了变量、函数、类,以及可执行的代码。
作用:提高代码复用性,降低开发门槛

二、导入模块的常用语法

在使用模块中提供的功能之前,必须得先导入,再使用。导入模块的具体语法如下(导入语句一般写在.py文件的开头):

导入形式

代码样例

调用方式

调用方式

import模块名

import random, os

模块名.功能名

random.randint(10, 100)

import模块名as别名

import random as rd

别名.功能名

rd.randint(10, 100)

from模块名import功能名

from random import randint,choice

功能名

randint(10, 100)

from模块名import功能名as别名

from random import randint as rint

别名

rint(10, 100)

from模块名import *

from random import *

功能名

randint(10, 100)

2.1 基础导入示例

假设我们有一个自定义模块circle_fun.py,其中定义与圆相关的常量和函数:

# circle_fun.py PI = 3.14159 def circle_area(radius): """计算圆的面积""" return PI * radius * radius def circle_perimeter(radius): """计算圆的周长""" return 2 * PI * radius

main.py中,我们可以使用不同的导入方式调用这些功能:

# main.py - 方式1:import 模块名 import circle_fun print(circle_fun.PI) # 3.14159 print(circle_fun.circle_area(5)) # 78.53975
# main.py - 方式2:from 模块名 import 功能名 from circle_fun import PI, circle_area print(PI) # 3.14159 print(circle_area(5)) # 78.53975
# main.py - 方式3:from 模块名 import *(谨慎使用) from circle_fun import * print(PI) # 3.14159 print(circle_perimeter(5)) # 31.4159

三、自定义模块

当开发一些复杂的项目,为了让项目结构更清晰,更便于项目的维护管理及代码的复用,可能会把一个项目拆分为若干个模块。

3.1 模块级特殊变量:__all____name__

3.1.1__all__

__all__是一个模块级别的特殊变量,用于指定from 模块名 import *时会导入哪些功能(*通配了哪些功能)。

示例:在circle_fun.py中限制import *只导入circle_areaPI,而不导入circle_perimeter

# circle_fun.py(带 __all__) __all__ = ['PI', 'circle_area'] # 仅这两个会通过 import * 被导入 PI = 3.14159 def circle_area(radius): return PI * radius * radius def circle_perimeter(radius): return 2 * PI * radius

然后在main.py中:

from circle_fun import * print(PI) # 正常 print(circle_area(5)) # 正常 # print(circle_perimeter(5)) # 报错:NameError,因为未导入

3.1.2__name__

__name__是 Python 中非常重要的内置变量,表示的是当前模块的名称:

  • 当模块直接运行时:__name__的值为"__main__"

  • 当模块被导入时:__name__等于模块的文件名(不含.py后缀)

典型用法:在模块中添加测试代码,仅在直接运行时执行。

# circle_fun.py PI = 3.14159 def circle_area(radius): return PI * radius * radius def circle_perimeter(radius): return 2 * PI * radius # 测试代码,仅当直接运行此模块时执行 if __name__ == "__main__": print("测试:半径5的圆面积 =", circle_area(5)) print("测试:半径5的圆周长 =", circle_perimeter(5))

当你直接运行python circle_fun.py时,测试代码会执行;当其他模块导入它时,测试代码不会运行,保证了模块的纯净性。

四、软件包(Package)

包:本质就是一个文件夹,该文件夹中可以包含若干 Python 模块(.py文件),文件夹下还包含了一个__init__.py

作用:模块文件较多时,用来管理多个模块。(包的本质也是一个模块)

4.1 包的结构示例

utils/ # 包名 __init__.py # 标识这是一个包 math_utils.py # 数学相关模块 string_utils.py # 字符串相关模块 __all__ = ["my_fun", "my_var"] # 可在 __init__.py 中控制 import *

__init__.py的作用

  1. 标识这是一个包,而不是普通的文件夹

  2. 控制在import *时导入的模块列表(通过__all__变量)

4.2 导入包的方式

导入形式

代码样例

调用方式

调用方式

import包名.模块名

import utils.my_fun

包名.模块名.功能名

utils.my_fun.log_separator1()

from包名import模块名

from utils import my_fun

模块名.功能名

my_fun.log_separator1()

from包名import *

from utils import *

模块名.功能名

my_fun.log_separator1()

from包名.模块名import功能名

from utils.my_fun import log_separator1

功能名

log_separator1()

from包名.模块名import *

from utils.my_fun import *

功能名

log_separator1()

代码示例

假设utils/math_utils.py内容如下:

# utils/math_utils.py def add(a, b): return a + b def sub(a, b): return a - b

utils/__init__.py中控制导入行为:

# utils/__init__.py __all__ = ['math_utils', 'string_utils'] # 允许 from utils import * 导入这两个模块

main.py中使用:

# 方式1:import 包名.模块名 import utils.math_utils print(utils.math_utils.add(3, 5)) # 8 # 方式2:from 包名 import 模块名 from utils import math_utils print(math_utils.sub(10, 4)) # 6 # 方式3:from 包名 import *(需 __init__.py 中定义 __all__) from utils import * print(math_utils.add(2, 3)) # 5 # 方式4:from 包名.模块名 import 功能名 from utils.math_utils import add print(add(100, 200)) # 300

五、总结与最佳实践

概念说明
模块一个.py文件,封装变量、函数、类
一个包含__init__.py的文件夹,用于组织多个模块
导入原则尽量使用import 模块from 模块 import 具体功能,避免使用import *(除非明确用__all__控制)
__name__用于区分模块是直接运行还是被导入,常用于测试代码的隔离
__all__精细控制import *的可见范围,提升接口清晰度

通过合理划分模块和包,我们可以构建出结构清晰、易于维护的大型 Python 项目。现在,就动手创建你的第一个自定义模块吧!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询