模块(Module)是一个包含Python定义和语句的文件,模块可以包含函数、类、变量等,用于组织和重用代码。模块的主要作用包括:
(1)代码组织:将相关的函数、类等组织到一个模块中,使代码结构更清晰、易于管理和维护。
(2)代码重用:模块可以被其他Python程序导入和使用,避免了重复编写相同功能的代码。
(3)命名空间:模块提供了一个独立的命名空间,避免了命名冲突。
下面是一个简单的模块示例:
创建一个名为examples05_1.py的文件,内容如下:
def greet(name):
print(f"Hello, {name}!")
def add_numbers(a, b):
return a + b
PI = 3.14159
我们新建另一个python文件examples05_2.py,我们可以导入和使用examples05_1.py中定义的函数和变量:
#模块示例
import examples05_1 as my_module
my_module.greet("Alice")
result = my_module.add_numbers(10, 20)
print(result)
print(my_module.PI)
输出:
Hello, Alice!
30
3.14159
除了自定义模块外,Python还提供了大量内置模块和第三方模块,如:
- math:提供数学函数和常量。
- random:生成随机数。
- datetime:处理日期和时间。
- os:与操作系统交互,执行文件和目录操作。
- requests:发送HTTP请求,与Web服务交互。
- re:提供了正则表达式的功能,用于文本匹配和替换。
- json:提供了处理 JSON 数据的功能
1、math模块
Python中math模块提供的数学函数和常量的用法。
(1)常量:math.pi:圆周率π的近似值。math.e:自然常数e的近似值。
示例:
import math
print(math.pi) # 输出: 3.141592653589793
print(math.e) # 输出: 2.718281828459045
(2)三角函数:math.sin(x):计算x的正弦值,x为弧度制。math.cos(x):计算x的余弦值,x为弧度制。math.tan(x):计算x的正切值,x为弧度制。math.degrees(x):将弧度制的角度x转换为度数。math.radians(x):将度数x转换为弧度制。
示例:
import math
angle_degrees = 45
angle_radians = math.radians(angle_degrees)
print(math.sin(angle_radians)) # 输出: 0.7071067811865476
print(math.cos(angle_radians)) # 输出: 0.7071067811865476
print(math.tan(angle_radians)) # 输出: 0.9999999999999999
(3)指数和对数函数:math.exp(x):计算e的x次幂。math.log(x[, base]):计算x的自然对数,如果提供了base,则计算以base为底的x的对数。math.pow(x, y):计算x的y次幂。math.sqrt(x):计算x的平方根。
示例:
import math
print(math.exp(1)) # 输出: 2.718281828459045
print(math.log(10)) # 输出: 2.302585092994046
print(math.log(8, 2)) # 输出: 3.0
print(math.pow(2, 3)) # 输出: 8.0
print(math.sqrt(16)) # 输出: 4.0
(4)其他函数:math.ceil(x):返回大于或等于x的最小整数。math.floor(x):返回小于或等于x的最大整数。math.fabs(x):返回x的绝对值。
示例:
import math
print(math.ceil(3.2)) # 输出: 4
print(math.floor(3.8)) # 输出: 3
print(math.fabs(-5)) # 输出: 5.0
以上只是math模块提供的部分函数和常量,该模块还包含许多其他数学计算相关的函数和常量。math 模块还提供了许多其他数学计算的函数和常量,如双曲函数、特殊函数等。这些函数和常量在科学计算、数据分析等领域非常有用。
2、random模块
Python中random模块生成各种随机数。
(1)random.random(): 生成一个 [0.0, 1.0) 范围内的随机浮点数
例如:
import random
print(random.random()) # 输出: 0.7382605019196689 (每次运行结果可能不同)
(2)random.randint(a, b): 生成一个 [a, b] 范围内的随机整数
例如:
import random
print(random.randint(1, 10)) # 输出: 6 (每次运行结果可能不同)
(3)random.choice(seq): 从序列 seq 中随机选择一个元素
例如:
import random
fruits = ['apple', 'banana', 'orange', 'grape']
print(random.choice(fruits)) # 输出: 'orange' (每次运行结果可能不同)
(4)random.shuffle(seq): 将序列 seq 中的元素随机打乱
例如:
import random
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers) # 输出: [3, 1, 5, 2, 4] (每次运行结果可能不同)
(5)random.sample(population, k): 从总体 population 中随机选择 k 个不重复的元素
例如:
import random
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(random.sample(numbers, 3)) # 输出: [4, 1, 8] (每次运行结果可能不同)
(6)random.uniform(a, b): 生成一个 [a, b] 范围内的随机浮点数
例如:
import random
print(random.uniform(1.0, 5.0)) # 输出: 3.7514837188738517 (每次运行结果可能不同)
这些函数可以满足大多数生成随机数的需求。random 模块还提供了一些其他的函数,如 random.gauss() 用于生成符合高斯分布的随机数,random.expovariate() 用于生成符合指数分布的随机数等。
在实际应用中,随机数在模拟、游戏、加密、数据分析等领域都有广泛的应用。使用 random 模块可以方便地生成各种类型的随机数。
3、datetime模块
Python中random模块用来处理日期和时间。
(1)datetime.now(): 获取当前的日期和时间
例如:
from datetime import datetime
now = datetime.now()
print(now) # 输出: 2023-03-18 14:30:45.123456 (当前的日期和时间)
(2)datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0): 创建一个指定日期和时间的 datetime 对象
例如:
from datetime import datetime
dt = datetime(2023, 3, 18, 12, 30, 0)
print(dt) # 输出: 2023-03-18 12:30:00
(3)datetime.strftime(format): 将 datetime 对象格式化为指定格式的字符串
例如:
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 输出: 2023-03-18 14:30:45
(4)datetime.strptime(date_string, format): 将指定格式的字符串解析为 datetime 对象
例如:
from datetime import datetime
dt = datetime.strptime("2023-03-18 12:30:00", "%Y-%m-%d %H:%M:%S")
print(dt) # 输出: 2023-03-18 12:30:00
(5)timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0): 表示时间间隔
例如:
from datetime import datetime, timedelta
now = datetime.now()
one_week_later = now + timedelta(weeks=1)
print(one_week_later) # 输出: 2023-03-25 14:30:45.123456 (一周后的日期和时间)
(6)date(year, month, day): 表示日期
例如:
from datetime import date
today = date.today()
print(today) # 输出: 2023-03-18
(7)time(hour=0, minute=0, second=0, microsecond=0): 表示时间
例如:
from datetime import time
t = time(12, 30, 0)
print(t) # 输出: 12:30:00
这些只是 datetime 模块的一部分功能。datetime 模块还提供了许多其他的类和函数,用于处理日期、时间、时间间隔等。在实际应用中,如日期计算、格式化、解析等操作都会用到 datetime 模块。
3、os模块
Python 的 os 模块提供了一系列与操作系统交互的功能,包括执行文件和目录操作。以下是一些常见的示例:
(1)os.getcwd(): 获取当前工作目录的路径
例如:
import os
print(os.getcwd()) # 输出: /Users/username/Documents (当前工作目录的路径)
(2)os.chdir(path): 改变当前工作目录到指定路径
例如:
import os
os.chdir("/Users/username/Desktop")
print(os.getcwd()) # 输出: /Users/username/Desktop (改变后的工作目录)
(3)os.listdir(path): 列出指定路径下的文件和目录
例如:
import os
print(os.listdir("/Users/username/Desktop")) # 输出: ['file1.txt', 'file2.pdf', 'folder1'] (Desktop 目录下的文件和目录列表)
(4)os.path.exists(path): 检查指定路径是否存在
例如:
import os
print(os.path.exists("/Users/username/Desktop/file1.txt")) # 输出: True 或 False
(5)os.system(command): 执行系统命令并返回命令的退出状态
例如:
import os
exit_status = os.system('dir')
print(exit_status) # 输出命令的退出状态
(6)os.environ: 一个包含所有环境变量的字典
import os
print(os.environ['PATH']) # 输出 PATH 环境变量的值
这些只是 os 模块中的一部分功能,它还提供了许多其他有用的操作系统交互功能,如文件操作、进程管理、权限管理等。使用 os 模块可以方便地编写与操作系统相关的脚本和程序。
4、requests模块
Python 的 requests 模块发送 HTTP 请求并与 Web 服务交互,我们以访问 https://www.baidu.com 为例进行说明。
(1)发送 GET 请求获取百度首页内容
import requests
# 发送 GET 请求
response = requests.get('https://www.baidu.com')
# 检查请求是否成功
if response.status_code == 200:
# 输出响应内容
print(response.text)
else:
print('请求失败:', response.status_code)
运行这段代码,将会发送一个 GET 请求到 https://www.baidu.com,并获取百度首页的 HTML 内容。如果请求成功(状态码为 200),则输出响应的内容;否则,输出请求失败的状态码。
(2)发送 GET 请求带查询参数进行搜索
import requests
# 设置查询参数
params = {'wd': 'Python'}
# 发送 GET 请求带查询参数
response = requests.get('https://www.baidu.com/s', params=params)
# 输出请求的 URL
print(response.url)
# 输出响应内容
print(response.text)
运行这段代码,将会发送一个 GET 请求到 https://www.baidu.com/s,并带上查询参数 wd=Python。这将模拟在百度搜索框中输入 "Python" 进行搜索。输出请求的 URL 将显示带有查询参数的完整 URL。同时,输出响应的内容,即搜索结果页面的 HTML。
(3)处理请求异常
import requests
try:
# 发送 GET 请求
response = requests.get('https://www.baidu.com/not_found')
# 如果请求失败,抛出异常
response.raise_for_status()
# 输出响应内容
print(response.text)
except requests.exceptions.RequestException as e:
# 输出请求异常信息
print('请求异常:', e)
运行这段代码,将会发送一个 GET 请求到 https://www.baidu.com/not_found,这是一个不存在的页面。通过调用 response.raise_for_status(),如果请求失败(状态码不在 200-299 范围内),会抛出一个异常。我们使用 try-except 块来捕获请求异常,并输出异常信息。
这些例子展示了如何使用 requests 模块与 https://www.baidu.com 进行交互。我们可以发送 GET 请求获取页面内容,带查询参数进行搜索,并处理可能出现的请求异常。
通过 requests 模块,我们可以方便地与各种 Web 服务进行交互,获取数据、提交数据、处理响应等。它提供了简洁而强大的 API,使得发送 HTTP 请求变得非常简单。
5、re模块
Python 的 re 模块提供了正则表达式的功能,用于文本匹配和替换。
(1)匹配文本中的电子邮件地址
import re
text = "请联系我:gzmusem@outlook.com,或者发邮件到 gzmusem@163.com。"
# 使用正则表达式匹配电子邮件地址
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
matches = re.findall(pattern, text)
# 输出匹配到的电子邮件地址
for match in matches:
print(match)
运行这段代码,将会在给定的文本中查找所有的电子邮件地址,并输出匹配到的结果:
gzmusem@outlook.com
gzmusem@163.com
(2)替换文本中的特定模式
import re
text = "Hello, World! Hello, Python!"
# 使用正则表达式替换文本
new_text = re.sub(r'Hello', 'Hi', text)
# 输出替换后的文本
print(new_text)
运行这段代码,将会使用正则表达式将文本中的 "Hello" 替换为 "Hi",并输出替换后的文本:
Hi, World! Hi, Python!
(3)提取文本中的数字
import re
text = "我有 5 个苹果和 3 个橙子。"
# 使用正则表达式提取数字
numbers = re.findall(r'\d+', text)
# 输出提取到的数字
print(numbers)
运行这段代码,将会使用正则表达式从文本中提取所有的数字,并输出提取到的结果:
['5', '3']
(4)拆分文本
import re
text = "apple,banana,orange;grape"
# 使用正则表达式拆分文本
fruits = re.split(r'[,;]', text)
# 输出拆分后的结果
print(fruits)
运行这段代码,将会使用正则表达式根据逗号和分号对文本进行拆分,并输出拆分后的结果:
['apple', 'banana', 'orange', 'grape']
这些例子展示了 re 模块的一些常见用法。re 模块提供了强大的正则表达式功能,可以用于文本匹配、替换、提取和拆分等操作。
正则表达式是一种用于描述文本模式的语法。通过定义正则表达式模式,我们可以在文本中查找匹配的子串、替换特定模式、提取感兴趣的部分等。re 模块使得在 Python 中使用正则表达式变得非常方便和高效。
6、json模块
Python 的 json 模块提供了处理 JSON 数据的功能
(1)将 Python 对象转换为 JSON 字符串
import json
# 创建一个 Python 字典
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# 将 Python 字典转换为 JSON 字符串
json_string = json.dumps(data)
# 输出 JSON 字符串
print(json_string)
运行这段代码,将会将 Python 字典 data 转换为 JSON 字符串,并输出结果:
{"name": "John", "age": 30, "city": "New York"}
(2)将 JSON 字符串解析为 Python 对象
import json
# JSON 字符串
json_string = '{"name": "John", "age": 30, "city": "New York"}'
# 将 JSON 字符串解析为 Python 字典
data = json.loads(json_string)
# 访问 Python 字典中的数据
print(data["name"])
print(data["age"])
print(data["city"])
运行这段代码,将会将 JSON 字符串解析为 Python 字典 data,并访问字典中的数据:
John
30
New York
(3)将 Python 对象写入 JSON 文件
import json
# 创建一个 Python 字典
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# 将 Python 字典写入 JSON 文件
with open("data.json", "w") as file:
json.dump(data, file)
运行这段代码,将会将 Python 字典 data 写入名为 "data.json" 的文件中。文件内容将是 JSON 格式的数据。
(4)从 JSON 文件读取数据
import json
# 从 JSON 文件读取数据
with open("data.json", "r") as file:
data = json.load(file)
# 访问读取的数据
print(data["name"])
print(data["age"])
print(data["city"])
运行这段代码,将会从名为 "data.json" 的文件中读取 JSON 数据,并将其解析为 Python 字典 data。然后,我们可以访问字典中的数据。
这些例子展示了 json 模块的基本用法。json 模块提供了将 Python 对象与 JSON 数据进行相互转换的功能。我们可以使用 json.dumps() 将 Python 对象转换为 JSON 字符串,使用 json.loads() 将 JSON 字符串解析为 Python 对象。
此外,json 模块还支持将 Python 对象写入 JSON 文件和从 JSON 文件读取数据。这在处理配置文件、数据持久化等场景中非常有用。
JSON 是一种轻量级的数据交换格式,在 Web 开发、数据传输和配置文件等领域广泛使用。Python 的 json 模块使得处理 JSON 数据变得非常简单和方便。
代码示例地址:https://github.com/gzmusem/QuantExamples/tree/main/Examples05