百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

量化交易入门(八)Python开发-模块开发和常用模块

toyiye 2024-06-21 12:38 11 浏览 0 评论

模块(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

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码