





你可扫描下方二维码下载:







你可扫描下方二维码下载:

2025 新年快乐!在这个充满希望的新年里,愿大家都能心想事成,学业进步,健康快乐!
随着新年的到来,Market Moments 也迎来重磅更新!

每隔一段时间,总有几个重要的经济数据会影响市场。美联储利率决定、非农、CPI、GDP、PMI…这些数字的起伏,往往牵动着全球市场的神经。
现在市面上的经济数据APP 大多都存在一个问题:没有直观体现经济数据发布后这些数据对世界各地的金融市场产生的影响。
这就是我开发 Market Moments 的初衷。它是一个简单但实用的经济数据工具:

它就像一个随身的经济日历,帮你:
1. 追踪重要经济数据对不同市场的影响

2. 交易日历,哪一天发布了什么经济事件,会发布什么经济事件,有什么节假日,在这个 APP 上一清二楚:

3. 搜索,你可以搜索历史上发生过的经济事件以及其对市场的影响

4. 收藏和自定义设置:点击右上角的小星星,你就可以收藏某个事件,避免重复查找。另外,在设置页面中,你还可以选择红涨绿跌/中英文/黑色模式等配置。

5.分享功能最后,你还可以通过分享按钮,将事件分享给你朋友:

不追求花哨的功能,只为满足最基础的需求 – 知道该看什么,什么时候看。
如果你也需要这样一个工具,欢迎在 App Store 搜索【Market Moments】。
很多喜欢玩量化的同学都想要找一个靠谱且低费率能做自动化的券商。
我之前也推荐过一个渠道,但是因为他们公司内部问题,之前的那个开户渠道也遗憾下线了,今天给大家找到了一个新的渠道,费率如下:


有需要的或有任何疑问的可以直接联系我的微信: 83493903 (备注开户) 进行开通,或扫描二维码开户,有专业人士会跟进后续的开户和功能开通。
以下是二七阿尔量化的AI小机器人关于Copart公司的分析。
科帕特(Copart)是一家美国德克萨斯州达拉斯的在线车辆拍卖和再营销服务商,在北美、欧洲和中东都有业务。
[积极因素]:
[潜在问题]:
分析:基于积极的发展和潜在的担忧,我预测Copart(CPRT)的股价将在未来一周内上涨3-4%(从2023年11月17日到2023年11月24日)。公司强劲的财务表现和增长,以及高流动性,表明它是一个稳健的投资。然而,高负债水平和潜在的存货管理效率不足是可能影响公司盈利能力的潜在问题。
总体而言,公司最近的表现和未来的增长潜力表明它是一个强大的投资。然而,投资者应密切关注公司的债务水平和存货管理,以确保这些问题不会显现出来。在短期内,公司的股价预计将继续上升,受到强烈的市场情绪和公司基本面的推动。


快捷学习(shortcut learning)是指神经网络在训练期间使用某些特定的捷径(shortcut)来完成任务,而这些捷径可能并没有真正理解任务的本质,而是通过记忆一些特定的输入-输出对来完成任务。这种学习方式可能会导致过拟合问题,并且对于新的输入数据可能会产生不准确的预测。
例如,在图像分类任务中,一个神经网络可能会倾向于使用一些表面特征(如颜色或形状)来判断图像属于哪个类别,而没有真正理解该类别的本质特征。这样的模型可能会在训练集上表现出色,但在测试集上的表现可能会受到影响,因为测试集中可能包含了一些不同于训练集的样本。
为了解决快捷学习问题,一些方法包括增加训练数据,使用正则化技术(如dropout),以及设计更复杂的神经网络架构等。
快捷学习通常适用于一些具有高度结构化和规则化特征的任务,例如语音识别、图像分类和机器翻译等。在这些任务中,数据的结构和规律性可以被网络用来发现一些规则和模式,以加速学习过程。此外,快捷学习在一些数据较少的任务中也可以得到较好的表现,因为模型可以从有限的数据中学习并利用一些常见的输入-输出模式来加快训练速度。
但是,快捷学习也存在一些问题,如过拟合和对新数据的泛化性能不佳等问题。因此,在应用快捷学习技术时需要谨慎选择并结合其他方法来提高模型的泛化性能和稳健性。
股市分类问题通常是一个高度复杂和非线性的问题,由于股票市场的复杂性,快捷学习可能并不适合用于该领域的任务。
股票市场的特征和趋势是难以预测和解释的,因此需要更深入和细致的分析和建模。相反,快捷学习更适合处理具有明显规则和结构的数据,例如语音、图像和自然语言处理等领域。
在股票市场的分类问题中,需要考虑各种不同的影响因素,例如市场走势、经济政策、公司业绩等等。因此,更适合使用一些复杂的深度学习方法来处理这些数据,例如循环神经网络(RNN)和卷积神经网络(CNN)。这些方法可以更好地捕捉到不同特征之间的复杂关系,并提高模型的泛化性能。
比如对于450W数据量的股市数据,由于数据量较大,可以考虑使用一些比较复杂的深度学习模型来进行建模。以下是几种可能适合的模型:
综上所述,对于450W数据量的股市数据,可以尝试使用一些复杂的深度学习模型,例如CNN、LSTM和注意力机制等,以提高预测的准确性和稳定性。但是,选择哪种模型还需要考虑具体的问题和数据特征,需要进行实验和调整来选择最适合的模型。
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器来编写小型Python项目:Python 编程的最好搭档—VSCode 详细指南
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),输入命令安装依赖:
pip install pandas pip install numpy pip install scikit-learn pip install keras
获取数据
首先,你需要准备好股市秒级数据,这个文件的内容如下(可以在二七阿尔公众号后台回复秒级数据获取):
ts_code,trade_time,open,high,low,close,volume,amount 000001.SH,2021-10-08 15:00:00.0000000+08:00,3599.8,3600.0,3599.8,3600.0,0,0 000001.SH,2021-10-08 14:59:59.0000000+08:00,3599.8,3599.8,3599.7,3599.7,0,0 000001.SH,2021-10-08 14:59:58.0000000+08:00, ...
其中包含了某只股票的每秒开盘价、最高价、最低价、收盘价和成交量等信息。
然后,你需要对数据进行预处理,例如归一化、划分训练集和测试集、构造输入和输出等。这里我们假设你想用前10秒的数据来预测下一秒的涨跌情况,即二分类问题。我们可以用以下代码实现:
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
# 读取数据
data = pd.read_csv("stock_data.csv")
# 归一化数据
scaler = MinMaxScaler()
data_scaled = scaler.fit_transform(data)
# 构造输入和输出
X = []
y = []
seq_len = 10 # 前10秒作为输入
for i in range(seq_len, len(data_scaled)):
X.append(data_scaled[i-seq_len:i]) # 输入是10秒的数据
y.append(1 if data_scaled[i][3] > data_scaled[i-1][3] else 0) # 输出是下一秒的涨跌情况
X = np.array(X)
y = np.array(y)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)接下来,你需要搭建一个CNN模型来对输入进行特征提取和分类。这里我们使用Keras框架来实现一个简单的CNN模型,包含两个卷积层、两个池化层和一个全连接层:
from keras.models import Sequential from keras.layers import Conv1D, MaxPooling1D, Flatten, Dense # 定义模型参数 input_shape = (seq_len, 5) # 输入形状是(10, 5),即10秒的5个特征值 num_classes = 2 # 输出类别数是2,即涨或跌 # 搭建模型结构 model = Sequential() model.add(Conv1D(filters=32, kernel_size=3, activation="relu", input_shape=input_shape)) # 第一个卷积层,使用32个3大小的卷积核,并使用relu激活函数 model.add(MaxPooling1D(pool_size=2)) # 第一个池化层,使用2大小的池化窗口,并默认使用最大池化方法 model.add(Conv1D(filters=64, kernel_size=3, activation="relu")) # 第二个卷积层,使用64个3大小的卷积核,并使用relu激活函数 model.add(MaxPooling1D(pool_size=2)) # 第二个池化层,使用2大小的池化窗口,并默认使用最大池化方法 model.add(Flatten()) # 将多维度的输出展平为一维度的向量,以便输入全连接层 model.add(Dense(units=num_classes, activation="softmax")) # 全连接层,使用softmax激活函数输出类别概率 # 编译模型并查看摘要信息 model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"]) model.summary()
最后,你需要训练模型并评估其性能。这里我们使用20个epoch来训练模型,并在每个epoch结束后在测试集上进行评估:
# 定义训练参数
epochs = 20 # 训练轮数
batch_size = 32 # 批次大小
# 训练模型并在测试集上评估
for epoch in range(epochs):
model.fit(X_train, y_train, batch_size=batch_size) # 在训练集上训练模型
loss, acc = model.evaluate(X_test, y_test) # 在测试集上评估模型
print(f"Epoch {epoch+1}: loss={loss:.4f}, acc={acc:.4f}") # 打印损失和准确率这样,你就完成了一个Python的CNN模型分类股市秒级数据的示例。希望对你有帮助。👍
我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典


当期货价格高于现货价格时,投资者可以通过期现套利策略,获得低风险、高回报的投资收益。本文将介绍期现套利的基本概念和实现方式,并提供Python代码示例。
期现套利是一种通过利用现货市场和期货市场价格之间的差异进行投资的策略。当期货价格高于现货价格时,可以通过买入现货和卖出期货的方式进行套利,从而获得利润。
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器来编写小型Python项目:Python 编程的最好搭档—VSCode 详细指南
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),输入命令安装依赖:
期现套利可以通过以下步骤实现:
2.1 确定现货和期货的标的资产,并获取其价格数据。可以使用Python中的yfinance模块获取股票和期货的价格数据。
import yfinance as yf
# 获取标的现货价格
underlying_stock = yf.Ticker("AAPL")
underlying_stock_price = underlying_stock.history(period="1d")["Close"][0]
# 获取期货价格
futures_contract = "ES=F"
futures_data = yf.download(futures_contract, period="1d")
futures_price = futures_data["Close"][0]2.2 计算期货溢价或折价,并确定买卖方向。如果期货价格高于现货价格,则进行空头套利,即卖出期货合约,买入现货资产;反之,则进行多头套利,即买入期货合约,卖出现货资产。
# 计算期货溢价或折价
futures_premium = futures_price - underlying_stock_price
# 进行期现套利
if futures_premium > 0:
# 期货折价,买入期货,卖出现货
futures_quantity = 1
underlying_stock_quantity = round(futures_price / underlying_stock_price, 2)
print(f"买入 {futures_quantity} 手期货,卖出 {underlying_stock_quantity} 股现货")
else:
# 期货溢价,卖出期货,买入现货
futures_quantity = 1
underlying_stock_quantity = round(futures_price / underlying_stock_price, 2)
print(f"卖出 {futures_quantity} 手期货,买入 {underlying_stock_quantity} 股现货")期现套利是一种通过利用现货市场和期货市场价格差异进行投资的策略,需要投资者在现货和期货市场中具有一定的交易经验和分析能力。通过使用Python等程序化交易工具,投资者可以更加高效地实现期现套利策略。
股票估值是根据公司的财务数据和市场环境,计算出公司的内在价值,从而决定股票的价格。以下是一些常见的股票估值方法:
以上这些方法都有各自的优缺点,投资者可以根据自己的风险偏好、投资目标和投资策略,选择最适合自己的股票估值方法。而本文的重点,将介绍股利折现模型的原理及其计算方法。

股利折现模型是一种估值方法,用于计算一家公司的股票内在价值。该模型的基本假设是,公司未来的股利和股票价格应该是成比例的。因此,该模型基于两个关键要素:预期股利和股利的折现率。
股利折现模型的计算公式如下:
股票价格 = 每股股利 / (折现率 – 成长率)
其中,每股股利是指公司未来每股的预期股利,折现率是指投资者期望从股票投资中获得的回报率,成长率是指公司未来股利的增长率。
该模型的基本思想是,将未来的现金流折现回当前的价值,以便更准确地估算当前股票的内在价值。如果当前股票价格低于计算出的内在价值,则股票被认为是被低估的,可以被认为是购买的好时机。
股利折现模型的优点是可以考虑公司未来的盈利增长,以及投资者对股票的回报要求。但是,该模型的缺点是它基于一些假设,如股利的增长率是稳定的、折现率不变等,这些假设可能不符合实际情况。此外,该模型也无法考虑公司的负债情况、市场竞争等外部因素的影响。因此,投资者在使用股利折现模型进行估值时应该同时考虑其他因素,以得到更全面和准确的估值结果。

公司未来每股的预期股利是股利折现模型的一个重要参数,对于准确估值非常重要。以下是一些方法可以用来判断公司未来每股的预期股利:
需要注意的是,股利预测不是绝对准确的,未来的市场和经济环境都是不确定的,因此需要综合考虑多种因素,以得到更准确的股利预测。另外,不同的股利预测方法可能会得出不同的结果,投资者应该根据自己的风险偏好和投资目标,选择最适合自己的股利预测方法。
下面我们将实现一个简单的Python股利折现模型计算。
下面是一个用Python实现股利折现模型的例子,假设公司未来10年每年的股利分别为2, 2.2, 2.4, 2.6, 2.8, 3, 3.2, 3.4, 3.6和3.8元,且未来的股利增长率为5%,投资者对该股票的回报要求为10%。
def dividend_discount_model(dividends, discount_rate, growth_rate):
# 计算股利折现模型的股票价格
present_value = 0
for i in range(len(dividends)):
present_value += dividends[i] / (1 + discount_rate) ** (i + 1)
terminal_value = dividends[-1] * (1 + growth_rate) / (discount_rate - growth_rate)
stock_price = present_value + terminal_value / (1 + discount_rate) ** (len(dividends))
return stock_price
dividends = [2, 2.2, 2.4, 2.6, 2.8, 3, 3.2, 3.4, 3.6, 3.8] # 未来10年每年的股利
discount_rate = 0.1 # 投资者对该股票的回报要求为10%
growth_rate = 0.05 # 股利增长率为5%
stock_price = dividend_discount_model(dividends, discount_rate, growth_rate)
print("股票价格为:", round(stock_price, 2), "元")输出结果为:
股票价格为: 35.37 元
以上代码实现了一个简单的股利折现模型,通过输入股票未来每年的股利、投资者对该股票的回报要求和股利增长率等参数,计算出该股票的内在价值。需要注意的是,股利折现模型并不是唯一的估值方法,投资者应该综合考虑多种因素进行估值,以得到更准确的结果。
我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典

很多玩股票的朋友都希望能通过计算机来自动买入卖出股票,这样的作法在美股中很常见,但在A股由于监管的问题,从前我们的做法是通过Easytrader来实现股票的自动买入和卖出,但是这种做法会让交易时延达到1秒左右,而现在,通过QMT我们能直接将这1秒的延迟直接消除。
通过QMT的交易接口,我们能实现毫秒级的交易时延,比Easytrader速度快不少。这非常重要,要知道对于交易热门的股票,差1秒,买入价差可能就差5档。
本文将教大家如何使用QMT进行基础的简单买入卖出和撤单的功能,在本文的最后会介绍仅需3万门槛且起步仅0.5元的QMT开通通道。
QMT程序可以在我们公众号后台回复 QMT 下载。
下载登陆后,请先安装Python,在设置->模型设置中,点击Python库下载即可:

然后,要实现自动交易的功能,我们必须在模型研究中,新建一个策略:

然后就会弹出一个策略的编辑器,在这里会编辑我们的买入卖出策略:
QMT的基本执行结构是:
# 公众号:二七阿尔量化
def init(ContextInfo):
ContextInfo.accID = '你的账号ID'
def handlebar(ContextInfo):
# 处理K线
pass
下面会一步一步地讲解如何基于这个基本结构制作我们的根据信号买入卖出策略。
定时器
定时器是我们实现毫秒级策略的基础。在QMT中,执行是按照K线来的,比如分钟K线,日线等K线类型,新的一根bar到来后,就进入handle_bar函数被用户处理。但是这样按K线执行的逻辑有一个严重的问题,那就是无法执行秒级、毫秒级的策略。
如果你需要执行毫秒级的策略,就需要用到定时器了:
# 公众号:二七阿尔量化
ContextInfo.run_time("buy_logic", "100nMilliSecond", "2019-10-14 13:20:00")
这行代码的意思便是从2019-10-14 13:20:00开始,每隔100毫秒执行一次 buy_logic 函数。
只需要把这行代码放在 init 函数下,便会启动定时器。
买入卖出
首先介绍如何在QMT中实现自动买入卖出。QMT的买入卖出函数都是 passorder,通过传参实现不同的操作,比如:
passorder(23, 1102, account_id, "002587", 11, 6.80, 55000, "concepts_main", 1, "", ContextInfo)
看不懂不要紧,我们先往下看。
对于股票交易,它的参数列表如下:
passorder(opType, orderType, accountid, orderCode, prType, modelprice, volume, strategyName, quickTrade, ContextInfo)
opType: 我们上述例子中 opType 为 23,意思为 股票买入,或沪港通、深港通股票买入。对于股票的交易,它只有两种选项:
23: 股票买入,或沪港通、深港通股票买入 24: 股票卖出,或沪港通、深港通股票卖出
orderType: 这个参数是能让你指定 按股买入/按金额买入/按总资产比例买入/按可用比例买入某只股票,非常好用:
1101: 单股、单账号、普通、股/手方式下单(ETF申赎只能用此参数) 1102: 单股、单账号、普通、金额(元)方式下单(只支持股票) 1113: 单股、单账号、总资产、比例[0~1]方式下单 1123: 单股、单账号、可用、比例[0~1]方式下单
account_id: 用户ID,即你的股票账户名。
orderCode: 股票代码,不要添加任何后缀。
prType: 下单选价类型,可以选择以下委托方式
0:卖5价 1:卖4价 2:卖3价 3:卖2价 4:卖1价 5:最新价 6:买1价 7:买2价(组合不支持) 8:买3价(组合不支持) 9:买4价(组合不支持) 10:买5价(组合不支持) 11:(指定价)模型价(只对单股情况支持,对组合交易不支持) 12:涨跌停价 13:挂单价 14:对手价 26:限价即时全部成交否则撤单[上交所|深交所][期权] 27:市价即成剩撤[上交所][期权] 28:市价即全成否则撤[上交所][期权] 29:市价剩转限价[上交所][期权] 42:最优五档即时成交剩余撤销申报[上交所][股票] 43:最优五档即时成交剩转限价申报[上交所][股票] 44:对手方最优价格委托[深交所][股票][期权] 45:本方最优价格委托[深交所][股票][期权] 46:即时成交剩余撤销委托[深交所][股票][期权] 47:最优五档即时成交剩余撤销委托[深交所][股票][期权] 48:全额成交或撤销委托[深交所][股票][期权]
请注意,在今天全面注册制后,正常交易存在价格笼子(挂单最多只能在当前最新价上浮动2%),所以除了在集合竞价中使用涨跌停价(12),其他情况都不要使用。
modelprice: 指定买入价格,只有当prType是模型价时price有效;其它情况无效。
volume: 决定买入的量,根据orderType值最后一位确定volume的单位:
# 当orderType最后一位为: 1:股/手 2:金额(元) 3:比例
strategyName: 策略名称,按你喜好来定即可
quickTrade: 是否立马触发下单,0 否,1 是
ContextInfo: QMT的上下文,必须传递,保持变量不变即可。
然后我们再回过头来看这行代码:
# 公众号: 二七阿尔量化 passorder(23, 1102, account_id, "002587", 11, 6.80, 55000, "concepts_main", 1, "", ContextInfo)
它的意思是,用户(参数2) 以指定金额的方式(参数1) 买入(参数0) 股票002587(参数3), 按照指定价(参数4) 6.80 元的价格(参数5), 希望可以成交 55000 元(参数6).
现在,不看我的答案的情况下,尝试理解下面这行卖出代码:
# 公众号: 二七阿尔量化 passorder(24, 1123, account_id, "002587", 12, 0, 1, "concepts_main", 1, "", ContextInfo)
答案是用户(参数2) 以可用比例的方式(参数1) 卖出(参数0) 股票002587(参数3), 按照涨跌停价(参数4) (参数5随意), 希望可以 100% (参数6) 成交。
获取仓位
仓位的获取也很简单,只需要传递account_id,第二个参数指定 “STOCK”(股票), 第三个参数指定为”POSITION”(仓位)即可:
# 公众号: 二七阿尔量化 positions = get_trade_detail_data(account_id, "STOCK", "POSITION")
获取委托
委托列表和仓位列表的获取方式都是通过get_trade_detail_data函数,只不过第三个参数改为”ORDER”
# 公众号: 二七阿尔量化 get_trade_detail_data(account_id, "STOCK", "ORDER"):
如果你希望一个线程检测是否买入某只股票、另一个线程检测是否需要撤单,还有一个线程进行卖出操作,那么你可以这么做:
# encoding:gbk
# 公众号: 二七阿尔量化
import time
import datetime
account_id = ""
def init(ContextInfo):
ContextInfo.accID = account_id
ContextInfo.max_buy = 3
ContextInfo.run_time("buy_logic", "100nMilliSecond", "2019-10-14 13:20:00", 'SZ')
ContextInfo.run_time("cancel_logic", "1000nMilliSecond", "2019-10-14 13:20:00", 'SZ')
ContextInfo.run_time("sell_logic", "300nMilliSecond", "2019-10-14 13:20:00", 'SZ')
def handlebar(ContextInfo):
pass
def buy_logic(ContextInfo):
"""
你的买入逻辑
"""
pass
def cancel_logic(ContextInfo):
"""
你的撤单逻辑
"""
pass
def sell_logic(ContextInfo):
"""
你的卖出逻辑
"""
pass
这三个run_time的意思是分别按每100毫秒执行买入逻辑、每1秒执行撤单逻辑,每300毫秒执行卖出逻辑。
只需要一个程序就能完成这三件事,用过Easytrader的同学一下就会明白这比Easytrader好用多了。
我们有一个相对完整的根据信号买入卖出的代码,在开户入金完成后,公众号后台回复:QMT代码 联系我获取代码。
填充完你的各种逻辑后,保存程序,点击模型交易

选择左上角的新建策略交易,找到你刚刚保存的策略:

选择好账号类型和资金账号,确定后便可以准备开始运行策略,点击运行模式可以切换实盘/模拟盘。点击操作里的三角形便可以启动策略。

如果你是按本文定时器的方法使用QMT,你不需要在意策略周期。
本文对QMT的基本介绍结束,根据我这半个月的使用经历,我认为QMT对于我们量化交易而言是非常值得使用的,平均成交时间会比Easytrader方法快1秒左右。此外也不需要开启多个Easytrader进程去按键精灵般点点点,基本不会出现报错的情况。
我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典
