Skip to content

模块


简介

Python 的模块是用于组织、封装和重用代码的文件,一个 Python 文件就是一个模块。

一个模块中可以包含变量、函数、类和其他 Python 语句,它允许将代码逻辑划分为独立的单元,并提供了一种组织代码的方式,使代码更加模块化和易于维护。

Python 的模块可以分为三类,非别是 内建模块第三方模块自定义模块


模块的导入

Python 可通过模块导入引用其它模块中的数据,提供了 importfrom - import 两种导入方式。


  • import 导入:Python 中使用 import 关键字来导入模块,导入模块后,在当前文件中做为一个对象使用,可以通过 . 来引用模块中定义的函数、变量或类等。
# 导入内建模块 math
import math
#可以使用其中的 sqrt()来计算平方根
result = math.sqrt(25)
print(result)

  • import - as 导入:如果被导入的模块名比较长,在使用时会不太方便,也可以使用 as 为模块指定一个别名,一旦指定了别名,原模块名就不能使用了。
# 导入内建模块 math
import math as m
#可以使用其中的 sqrt()来计算平方根
result = m.sqrt(25)
print(result)

  • from - impport 导入:还可以使用 from module_name import object_name 语法,从模块中导入特定的对象,这样可以直接使用对象名,无需使用模块名前缀。
from math import sqrt

result = sqrt(25)
print(result)

入口函数

入口函数是 Python 程序的执行起点,用于区分模块作为独立脚本运行还是被导入运行。通过 if __name__ == "__main__":,Python 能够明确哪些代码应该在脚本直接运行时执行,而不是在模块被导入时运行。


原理解析

  • Python 在运行脚本时,会自动为每个模块定义一个特殊变量 __name__
  • 直接运行脚本时:__name__ 的值是 "__main__"
  • 模块被导入时:__name__ 的值是模块的名字。
if __name__ == "__main__":
    # 当且仅当脚本直接运行时执行此代码块
    pass

入口函数的作用

  • 避免不必要的执行:当模块被导入时,只有定义的函数、类和变量会加载,而不会执行入口函数中的代码。
  • 便于模块化编程:使脚本既可以独立运行,又可以作为模块被复用。
  • 程序结构清晰:通过入口函数组织主逻辑,增强代码的可读性和维护性。

模块复用与入口函数

# module.py

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

if __name__ == "__main__":
    print("测试函数 add: 3 + 5 =", add(3, 5))
# main.py

import module

result = module.add(10, 20)
print("模块函数调用结果:", result)

运行结果

# 运行 module.py

测试函数 add: 3 + 5 = 8

# 运行 main.py
模块函数调用结果: 30

内建模块

Python 标准库中包含了大量的内建模块,这些模块提供了各种功能,如数学计算、字符串处理、日期时间操作、文件操作等。通过导入相应的内建模块,可以使用这些功能,避免重复编写代码。


import random

# 生成1到100之间的随机整数
random_number = random.randint(1, 100)
print(random_number)
import datetime

# 获取当前日期和时间
current_datetime = datetime.datetime.now()

# 格式化日期输出
formatted_date = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)


dir() 函数

dir() 是 Python 内置函数,用于获取指定对象的所有属性和方法的列表。

格式: dir(obj)

import math

print(dir(math))

自定义模块

由开发者编写,用于封装代码、组织功能,以便在其他 Python 程序中复用。自定义模块是一个 Python 文件,可以包含函数、类、变量等。

# 创建一个my_module.py文件

def greet(name):
    return f"Hello, {name}!"

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

在其他文件中使用:

# 导入
import my_module

print(my_module.greet("Alice"))
print(my_module.add(5, 3))

第三方模块

第三方模块和库通过包管理工具 pip 安装。如:PyMySQL, pytest, Flask, SQLAchemy 等等。


总结

  • 模块的导入
  • 内建模块
  • dir() 函数
  • 自定义模块
  • 第三方模块