python基础之--包和模块
python基础之–包和模块
文章目录
- python基础之--包和模块
- 一、模块
- 1.1 基本概念
- 1.2定义模块
- 1.3导入模块
- 1.4内部属性
- 1.5 常见模块
- 1.6 第三方模块
- 1.7自定义模块
- 1.8总结对比
- 二、包
- 1.基本概念
- 2.导入包和子包
- 2.3 \_\_init\_\_.py
- 三,模块与包的区别
一、模块
1.1 基本概念
- 定义:模块是一个Python文件,每个 . p y .py .py 文件就是一个模块。
- 作用:用于组织代码,避免代码重复,提高复用性。
- 使用:通过 i m p o r t import import 语句导入模块中的内容。
1.2定义模块
定义一个model1模块
def runnianjisuan(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print(year, "是闰年")
else:
print(year, "不是闰年")
return
def add(a, b):
return a + b
def sub(a, b):
return a - b
if __name__ == '__main__':
year = int(input("请输入年份:"))
runnianjisuan(year)
1.3导入模块
- 语法
-
import 模块名 [as 模块新名字1]
导入一个模块到当前程序
-
from 模块名 import 模块属性名 [as 属性新名]
导入一个模块内部的部分属性到当前程序
-
from 模块名 import *
导入一个模块内部的全部属性到当前程序
# 模块
# 一个.py文件就是一个模块
# 可以引入模块,使用模块中的函数和变量
import model1
def fn():
re = model1.runnianjisuan(1978)
print(re)
fn()
# 模块的导入
# 1. import 模块名
# 2. from 模块名 import 函数名
# 3. from 模块名 import *
# 4. import 模块名 as 别名
# 5. from 模块名 import 函数名as 别名
PS F:\hqyj> & C:/Users/Administrator/anaconda3/python.exe f:/hqyj/14模块和包.py
1978 不是闰年
None
1.4内部属性
__file__ 绑定模块的路径
__name__ 绑定模块的名称
如果是主模块(首先启动的模块)则绑定 '__main__'
如果不是主模块则 绑定 xxx.py 中的 xxx 这个模块名
1.5 常见模块
模块 | 功能 | 官方文档 |
---|---|---|
math | 数学运算 | https://docs.python.org/zh-cn/3.12/library/math.html |
os | 操作系统接口 | https://docs.python.org/zh-cn/3.13/library/os.html |
os.path | 路径相关 | https://docs.python.org/zh-cn/3.13/library/os.path.html |
datetime | 日期和时间 | https://docs.python.org/zh-cn/3.13/library/datetime.html |
random | 随机数生成 | https://docs.python.org/zh-cn/3.13/library/random.html |
time | 时间 | https://docs.python.org/zh-cn/3.13/library/time.html |
- 使用实例
随机数
import random
#随机数
def random_num():
print(random.randint(1, 100))
print(random.random())
print(random.choice([1, 2, 3, 4, 5]))
if __name__=="__main__":
random_num()
import time
59
0.7638132453964123
3
时间
#时间
def time_fn():
t=time.time()#1970-1-1 08:00:00 到 这个代码运行的时候 过了多少秒
# print(t)
# for _ in range(10000):
# c=100+200
# time.sleep(2)#让程序暂停5秒钟
print(time.time()-t)
print(time.localtime())
# 获取年份
print(time.localtime().tm_year)
print(time.strftime("%Y年%m-%d %H:%M:%S"))
print(time.strftime("%H点%M分%S秒"))
if __name__=="__main__":
time_fn()
time.struct_time(tm_year=2025, tm_mon=3, tm_mday=24, tm_hour=16, tm_min=39, tm_sec=38, tm_wday=0, tm_yday=83, tm_isdst=0)
2025
2025年03-24 16:39:38
16点39分38秒
数学
# math模块
def math_fn():
print(math.pi)
print(math.e)
print(math.sqrt(2))
print(math.log(2))
deg=math.pi/180
print(math.sin(90*deg))
if __name__=="__main__":
math_fn()
3.141592653589793
2.718281828459045
1.4142135623730951
0.6931471805599453
1.0
计算机内置操作
def os_fn():
print(os.name)
print(os.getcwd())#获取当前目录
print(os.listdir())#获取当前目录下的所有文件
print(os.path.exists(""))#判断文件是否存在
print(os.path.isdir(""))#判断是否是文件夹
print(os.path.isfile(""))#判断是否是文件
print(os.path.join("",""))#拼接路径
if __name__=="__main__":
os_fn()
['00变量3.8.ipynb', '01字符串3.8.ipynb', '02数字3.9.ipynb', '03列表3.10.ipynb', '04元组3.11.ipynb', '05字 典3.11.ipynb', '06集合3.12.ipynb', '07运算.3.13.ipynb', '08语句3.14.ipynb', '09Python函数3.15.ipynb', '10 装饰器.ipynb', '11类和对象3.19.ipynb', '12迭代器和生 成器.ipynb', '13异常处理.ipynb', '14模块和包.py', '15内置模块和包.py', '222.html', 'file.txt', 'lianxi .ipynb', 'model1.py', 'model2.py', '__pycache__', '视频']
False
False
1.6 第三方模块
由社区或公司开发,通过包管理工具(如pip
)安装,用于实现更高级或更具体的功能,如数据科学、图像处理、网络爬虫等。
- 举例
模块 | 功能 | 示例 |
---|---|---|
numpy | 数值计算 | 科学运算、矩阵操作 |
pandas | 数据分析 | 数据清洗与处理 |
matplotlib | 数据可视化 | 绘制图表 |
requests | HTTP请求处理 | 爬取网页内容,调用API |
flask | Web应用框架 | 快速搭建Web服务 |
使用方法
1.安装模块
pip install numpy
2.使用模块
# numpy 模块
import numpy as np
array = np.array([1, 2, 3])
print(array.mean()) # 输出: 平均值 2.0
1.7自定义模块
- 用户自己编写的模块,用于复用代码。
- 文件名以
.
p
y
.py
.py 结尾,存放自定义的函数、类等。
model1,用于判定是否为闰年和加减法工具,可以直接调用
def runnianjisuan(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print(year, "是闰年")
else:
print(year, "不是闰年")
return
def add(a, b):
return a + b
def sub(a, b):
return a - b
if __name__ == '__main__':
year = int(input("请输入年份:"))
runnianjisuan(year)
1.8总结对比
分类 | 获取方式 | 使用场景 | 示例 |
---|---|---|---|
系统模块 | 随Python自带 | 常用功能,性能高效 | math , os , random |
第三方模块 | pip 安装 | 高级功能,特定领域 | numpy , requests |
自定义模块 | 自己编写 | 项目特定需求,灵活控制 | utils.py |
二、包
1.基本概念
-
定义:
- 包是包含多个模块的目录。
- 包的本质是一个包含 _ _ i n i t _ _ . p y \_\_init\_\_.py __init__.py 文件的文件夹。
- 文件 _ _ i n i t _ _ . p y \_\_init\_\_.py __init__.py 可为空,也可以包含初始化代码。
-
作用:用于组织模块的集合,形成层次化的结构,便于管理大型项目。
my_package/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py
2.导入包和子包
# 同模块的导入规则
import 包名 [as 包别名]
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 属性名 [as 属性新名]
# 导入包内的所有子包和模块
from 包名 import *
from 包名.模块名 import *
2.3 __init__.py
_ _ i n i t _ _ . p y \_\_init\_\_.py __init__.py 用于初始化Python包或模块,作用有:
- 标识包目录: 告诉Python解释器当前目录应被视为一个包。
- 执行初始化代码: 可以包含任何代码,通常用于包的初始化操作,如变量初始化、导入模块等。这些代码在包被导入时执行。
- 控制包的导入行为: 通过
__all__
变量明确指定从包中可以导入哪些模块,从而限制包的公开接口。 - 提供包级别的命名空间:
__init__.py
中定义的变量和函数可以在包的模块中共享。 - 批量导入模块: 可以在
__init__.py
文件中批量导入模块,这些模块可以更方便地使用。
# __init__.py 文件示例
# 1. 批量导入系统模块
import os
import sys
import datetime
# 2. 定义包级别的变量
package_variable = "This is a package variable"
# 3. 控制包的导入行为
__all__ = ['module1', 'module2']
# 4. 执行初始化代码
print("Initializing mypackage")
三,模块与包的区别
模块 | 包 |
---|---|
一个Python文件 | 一个包含__init__.py 的文件夹 |
提供基本功能单元 | 用于组织多个模块 |
文件名为.py | 目录名 |