02 2025 档案

摘要:参考:上海证券交易所LDDS系统Level-1 FAST行情接口说明书、上海证券交易所LDDS系统竞价Level-2行情接口说明书(来自https://www.sseinfo.com/services/assortment) 行情快照与逐笔数据 上交所的LDDS(Low Latency Data D 阅读全文
posted @ 2025-02-15 15:55 superzzh 阅读(20) 评论(0) 推荐(0) 编辑
摘要:穷人版仿真交易解决方案 掘金仿真交易终端可以提供模拟精准撮合成交。并且提供了python的工具包gmtrade以供用户与交易终端交互。相当于前文的CTP用gmtrade代替。 VNPY对掘金仿真交易的封装在vnpy_gm包中。 代码解读 掘金交易网关GmGateway package from gm 阅读全文
posted @ 2025-02-15 15:55 superzzh 阅读(16) 评论(0) 推荐(0) 编辑
摘要:Gateway封装思路 CTP,全称为中国期货市场监控中心交易系统(China Financial Futures Exchange Trading System),是由中国金融期货交易所开发的一套综合性交易系统。该系统不仅支持期货交易,还涵盖了期权、债券等多种金融产品的交易。通过期货公司提供的CT 阅读全文
posted @ 2025-02-15 15:54 superzzh 阅读(12) 评论(0) 推荐(0) 编辑
摘要:交易引擎CtaEngine CTA策略既可以用于投研、回测,也可以用于实盘交易。执行实盘交易的引擎是CtaEngine。为了保证策略在回测和实盘时接口保持统一,CtaEngine与BacktestingEninge在与策略相关的接口设计上有相似之处。 而不同点在于,CtaEngine要对接实时行情接 阅读全文
posted @ 2025-02-15 15:53 superzzh 阅读(6) 评论(0) 推荐(0) 编辑
摘要:解决仿真交易的穷人版方案 一般来说,高质量的实时行情推送服务没有免费提供的,而购买费用对穷人不太友好。但是结合VNPY对掘金仿真交易终端的支持,可以简单实现仿真交易。 掘金仿真交易终端可以看作是一个仿真柜台,它可以提供交易时段的精准模拟撮合。故我们可以连接到掘金终端,在其上完成报单、撤单等操作,而且 阅读全文
posted @ 2025-02-15 15:53 superzzh 阅读(12) 评论(0) 推荐(0) 编辑
摘要:绩效分析 在调用BacktestingEngine进行回测的同时,引擎会同步生成交割单trade。而完成回测后,引擎会根据交割单信息给出回测的绩效分析。 在评估一个策略的表现时,以下指标是经常采用的: Sharpe Ratio \[SR = \frac{E(r_p)-r_f}{\sigma_p} \ 阅读全文
posted @ 2025-02-15 15:52 superzzh 阅读(18) 评论(0) 推荐(0) 编辑
摘要:回测执行引擎BacktestingEngine 回顾前面的文章CTA:回测综述,那里提到,真正执行回测的逻辑,写在BacktestingEngine中。 代码解读 BacktestingEngine定义在vnpy_ctastrategy -> backtesting.py中。 package fro 阅读全文
posted @ 2025-02-15 15:51 superzzh 阅读(16) 评论(0) 推荐(0) 编辑
摘要:K线池 大多数CTA策略需要保存一定的数量,用于计算技术指标。因而需要维护一定长度的历史数据序列。ArrayManager实现了这一功能。 代码解读 ArrayManager在vnpy.trader.utility当中定义。 初始设置 class ArrayManager(object): def 阅读全文
posted @ 2025-02-15 15:50 superzzh 阅读(12) 评论(0) 推荐(0) 编辑
摘要:K线合成器 VNPY通过CTP接口连接交易所,订阅行情后就能几乎实时地收到Tick数据。如果策略是基于Tick数据的,可以直接使用;如果策略是基于K线的,则K线需要在本地合成。 BarGenerator支持灵活地合成数据: 基于Tick合成1分钟K线 基于1分钟K线合成X分钟K线/X小时K线 代码解 阅读全文
posted @ 2025-02-15 15:49 superzzh 阅读(24) 评论(0) 推荐(0) 编辑
摘要:策略是模板类的子类 一个策略就是一个继承自模板类的子类。每个策略放在单独的.py脚本文件中。 策略文件可以放在两个地方: vnpy_ctastrategy -> strategies working_diretory -> strategies 下面以最简单的双均线策略做一个示例。 示例:双均线策略 阅读全文
posted @ 2025-02-15 15:49 superzzh 阅读(14) 评论(0) 推荐(0) 编辑
摘要:CTA策略模板类 VNPY定义了所有CTA策略的基类CtaTemplate,既适用于回测,也适用于实盘。 代码在vnpy_ctastrategy -> template.py中。 代码解析 package from abc import ABC from copy import copy from 阅读全文
posted @ 2025-02-15 15:48 superzzh 阅读(17) 评论(0) 推荐(0) 编辑
摘要:回测线程 VNPY采用多线程的方式处理费时操作,回测设计了单独的回测线程。 实现回测线程的类结构如下: 执行流程如下: BacktesterEngine回测引擎类 含有成员变量backtesting_engine,指向一个BacktestingEngine实例。 含有属性thread,默认为None 阅读全文
posted @ 2025-02-15 15:47 superzzh 阅读(6) 评论(0) 推荐(0) 编辑
摘要:事件引擎 事件引擎监听一些事件,当某些事件发生的时候,要分配相对应的函数进行处理,完成这个过程的机制 就叫事件引擎。事件引擎应该具有以下功能: 有一个容器,暂存待处理的事件。事件发生时,可以先放到这个容器中等待处理。 将事件类型与处理函数关联。一类事件可以由多个函数来处理,一个函数也可以处理多类事件 阅读全文
posted @ 2025-02-15 15:47 superzzh 阅读(11) 评论(0) 推荐(0) 编辑
摘要:整体架构 每个层次的模块只调用下层功能,并对上层提供接口。 接口层负责对接行情和交易API,将行情数据推送到系统,发送交易指令。 引擎层向下对接交易接口、数据库,向上服务于各种上层应用。 应用层主要是面向用户的可视化界面,这一部分的代码主要为引擎功能与界面的连接。 功能模块 新版VNPY将各个功能模 阅读全文
posted @ 2025-02-15 15:46 superzzh 阅读(28) 评论(0) 推荐(0) 编辑
摘要:设置工作目录 VNPY程序启动后,会产生一个工作目录,程序运行产生的数据、系统配置都会放在指定的.vntrader目录当中。 这一设置在vnpy -> utility.py -> _get_trader_dir函数中可以找到,工作目录由TRADER_DIR, TEMP_DIR确定。 def _get 阅读全文
posted @ 2025-02-15 15:46 superzzh 阅读(12) 评论(0) 推荐(0) 编辑
摘要:单因子选股回测——简单示例 RQAlpha的因子回测可以采用外部调仓表+批量调仓交易接口实现。也就是说,选股逻辑在策略之外实现。 现在,我用一个朴素的想法实现单因子选股并回测的过程。 这个想法是:以沪深300为股票池,根据PE因子选股。每次选出PE值位于股票池0.4~0.6分位数之间的股票,每七天调 阅读全文
posted @ 2025-02-15 15:38 superzzh 阅读(13) 评论(0) 推荐(0) 编辑
摘要:特点 不限因子的资产类型和数据频率,因子检验的使用范围更广; 支持传入自定义收益率,不再局限于股票日终收益率; 支持传入自定义资产行业,更灵活地计算 IC 行业分布; 对于多日调仓的场景,使用滚动调仓计算 IC 和因子收益,从而减少路径依赖; 通过构造管道进行数据处理和分析计算,方便用户反复地进行检 阅读全文
posted @ 2025-02-15 15:38 superzzh 阅读(11) 评论(0) 推荐(0) 编辑
摘要:在股票投资中,我们会经常使用某种指标或者多种指标来对股票池进行筛选,这些用于选股的指标一般被称为因子。在米筐提供的因子系统中,目前仅支持日频率的因子。具体来说,一个因子在其定义的股票池中,对于池中的上市股票,每个交易日每只股票只会计算出一个值。 因子可分为基础因子和复合因子两种: 基础因子:不依赖于 阅读全文
posted @ 2025-02-15 15:34 superzzh 阅读(11) 评论(0) 推荐(0) 编辑
摘要:安装RQSDK套件,RQSDK套件包括 RQData金融数据API RQAlpha-Plus回测框架 RQFactor因子投研工具 RQOptimizer股票组合优化器 RQPAttr绩效归因工具 pip install -i https://pypi.tuna.tsinghua.edu.cn/si 阅读全文
posted @ 2025-02-15 15:33 superzzh 阅读(17) 评论(0) 推荐(0) 编辑
摘要:例子 现有一个投资组合,其基准组合为:70%中证800,20%债券,10%现金,如下: 基金经理主动投资,对资产权重进行调整。假设基准组合收益率为r。 若是看好股票,那就多配置一些股票,调整中证800权重为w1。则收益调整为(\(w_1^{\prime}-w)(r 阅读全文
posted @ 2025-02-15 15:30 superzzh 阅读(36) 评论(0) 推荐(0) 编辑
摘要:结合收益模型和风险模型做投资组合优化,期望在控制风险的同时,取得尽可能高的收益。 Markowitz均值-方差模型 求解目标: minwRwζ2wΣw一方面,它想要找到股 阅读全文
posted @ 2025-02-15 15:29 superzzh 阅读(14) 评论(0) 推荐(0) 编辑
摘要:为什么协方差矩阵代表了风险? 对于投资组合wR来说,其波动率可用标准差来衡量。为此,需要得到方差,而资产组合的方差用协方差矩阵表达。 风险模型的目的 风险模型的关键在于资产收益协方差矩阵的估计。而多因子模型的一个重要意义,是实现了降维。 假设共有N个资产,取时间段为T,多因子 阅读全文
posted @ 2025-02-15 15:29 superzzh 阅读(27) 评论(0) 推荐(0) 编辑
摘要:以多因子模型为方法论,开发更牛逼的收益率模型,是量化研究员的主要工作内容。 获取Alpha 开发收益率模型的目的是,找到能够预测股票股票收益率的预测变量,这些变量往往是通过股票的量价或者财务数据计算的指标。 往往用某个宽基指数作为股票池,宽基指数的收益率作为基准。若收益率模型所获取的收益能够超过基准 阅读全文
posted @ 2025-02-15 15:28 superzzh 阅读(12) 评论(0) 推荐(0) 编辑
摘要:以下因子均为风格因子,用排序法检验。为了统一效果,对检验设置做如下规定: 股票池:主板+中小板股票,科创板与创业板不纳入。 检验时间段:2013年1月1日至2023年12月31日。 分组:10组。 调仓周期:22日/月末调仓。 回测资金:100万元。 工具函数 import rqdatac impo 阅读全文
posted @ 2025-02-15 15:27 superzzh 阅读(8) 评论(0) 推荐(0) 编辑
摘要:前面提到,因子是一个抽象概念,它不是因子收益率λ,也不是某个变量。 那么,对于定价模型βiλ,因子暴露和因子收益率怎么计量呢?此为实证因子检验所要解决的问题。 要解决这个问题,要用到变量值,此时称变量为构造因子的变量。 投资组合排 阅读全文
posted @ 2025-02-15 15:18 superzzh 阅读(34) 评论(0) 推荐(0) 编辑
摘要:因子 因子是什么?用最简单的话来说: 因子是资产收益的驱动力。 从这个表述上来看,因子是一个抽象概念。从风险角度看: 因子描述了众多资产共同暴露的系统性风险,因子所带来的收益正是这种系统性风险的风险溢价或风险补偿。 风险换收益,想要获取什么样的收益,就要承担相应的风险。 多因子模型与异象 为进一步定 阅读全文
posted @ 2025-02-15 15:18 superzzh 阅读(25) 评论(0) 推荐(0) 编辑
摘要:长江证券资产配置部关于量化私募行业的系列文章,对了解量化私募运作方式、量化策略类型有帮助。 量化私募(一): 指数增强基金如何实现收益增强? https://mp.weixin.qq.com/s/m4L8XALAW-dQe1ryqYDvIA 量化私募(二): 同是指数增强基金,为何差别如此之大? h 阅读全文
posted @ 2025-02-15 15:17 superzzh 阅读(18) 评论(0) 推荐(0) 编辑
摘要:![](https://img2024.cnblogs.com/blog/3604084/202502/3604084-20250215151649542-391261431.jpg) 阅读全文
posted @ 2025-02-15 15:17 superzzh 阅读(4) 评论(0) 推荐(0) 编辑
摘要:委托 各类投资者委托券商发起交易订单,委托方式有两种:限价委托和市价委托。这样,下单时会发现有两种单: 限价委托Limit Order 从朴素的交易者心理分析: 卖股票的人不希望自己的股票贱卖,希望股票买个好价钱,于是给定一个价格,只希望以该价格或者更高价格成交 买股票的人不希望自己买亏了股票,希望 阅读全文
posted @ 2025-02-15 15:16 superzzh 阅读(11) 评论(0) 推荐(0) 编辑
摘要:金融期权品种一览 上海证券交易所 品种 行权方式 上市日期 华夏上证50ETF期权 欧式 2015-02-09 华泰沪深300ETF期权 欧式 2019-12-23 南方中证500ETF期权 欧式 2022-09-19 华夏上证科创板50ETF期权 欧式 2023-06-05 易方达上证科创板50E 阅读全文
posted @ 2025-02-15 15:15 superzzh 阅读(5) 评论(0) 推荐(0) 编辑
摘要:股指期货标的介绍 股指期货,是以股票指数为标的物的衍生品。交易股指期货就是交易对未来行情的预期。国内现存股指期货合约都由中国金融期货交易所(中金所)发行,具体地有四个品种: 上证50股指期货 代码:IH 风格: 偏向大盘蓝筹 行业分布:食品饮料: 30.78%;银行: 25.08%;非银金融: 22 阅读全文
posted @ 2025-02-15 15:14 superzzh 阅读(10) 评论(0) 推荐(0) 编辑
摘要:上证指数系列 由上海证券交易所编制,重点指数如下(数据截至2024-07-06): 指数名称 指数代码 收盘 成交额(亿元) 平均股本(亿股) 静态市盈率 上证指数 000001 2976.3 2793.62 21.37 12.74 科创50 000688 732.06 223.94 16.28 2 阅读全文
posted @ 2025-02-15 14:50 superzzh 阅读(14) 评论(0) 推荐(0) 编辑
摘要:张量生成 l = [[1., -1.], [-1, 1]] tensor_from_list = torch.tensor(l) print(tensor_from_list) print(tensor_from_list.dtype) print(tensor_from_list.device) 阅读全文
posted @ 2025-02-15 14:44 superzzh 阅读(3) 评论(0) 推荐(0) 编辑
摘要:损失函数 损失函数(loss function)是用来衡量模型输出与真实标签之间的差异,当模型输出越接近标签,认为模型越好,反之亦然。因此,可以得到一个近乎等价的概念,loss越小,模型越好。这样就可以用数值优化的方法不断的让loss变小,即模型的训练。 L1Loss torch.nn.L1Loss 阅读全文
posted @ 2025-02-15 14:44 superzzh 阅读(9) 评论(0) 推荐(0) 编辑
摘要:模型搭建简例 import torch import torch.nn as nn 这是一个简化的CNN模型,用于二分类。 class TinnyCNN(nn.Module): def __init__(self, cls_num=2): super(TinnyCNN, self).__init__ 阅读全文
posted @ 2025-02-15 14:43 superzzh 阅读(10) 评论(0) 推荐(0) 编辑
摘要:设计dataset的一个简例: 现有两类照片,标签信息保存在txt文件中。 import os import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from to 阅读全文
posted @ 2025-02-15 14:43 superzzh 阅读(5) 评论(0) 推荐(0) 编辑
摘要:DataLoader特点 支持两种形式数据集读取 映射式(Map-style):简例中讲解的Dataset类就是映射式,因为它提供了序号到数据的映射(__getitem__)。 迭代式(Iterable-style):编写一个可迭代对象,从中依次获取数据。 自定义采样策略 DataLoader可借助 阅读全文
posted @ 2025-02-15 14:43 superzzh 阅读(8) 评论(0) 推荐(0) 编辑
摘要:计算图 假设有这样一个算式:y=(x+w)(w+1),则具体细化为: a=x+w b=w+1 y=ab 得到计算图如下: w = torch.tensor([1.], requires_grad=True) x = torch.tensor([2.], requires_grad= 阅读全文
posted @ 2025-02-15 14:42 superzzh 阅读(4) 评论(0) 推荐(0) 编辑
摘要:类元编程 (元类)是深奥的知识,99% 的用户都无需关注。如果你想知道是否需要使用元类,我告诉你,不需要(真正需要使用元类的人确信他们需要,无需解释原因)。 ——Tim Peters, Timsort 算法的发明者,活跃的 Python 贡献者 元类功能强大,但是难以掌握。使用元类可以创建具有某种特 阅读全文
posted @ 2025-02-15 14:40 superzzh 阅读(11) 评论(0) 推荐(0) 编辑
摘要:属性描述符 学会描述符之后,不仅有更多的工具集可用,还会对 Python 的运作方式有更深入的理解,并由衷赞叹 Python 设计的优雅。 ——Raymond Hettinger, Python 核心开发者和专家 本章的话题是描述符。 描述符是实现了特定协议的类,这个协议包括 __get__、__s 阅读全文
posted @ 2025-02-15 14:40 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:动态属性和特性 特性至关重要的地方在于,特性的存在使得开发者可以非常安全并且确定可行地将公共数据属性作为类的公共接口的一部分开放出来。 ——Alex Martelli, Python 贡献者和图书作者 本章内容: 特性(property) 动态属性存取(__getattr__ 和 __setattr 阅读全文
posted @ 2025-02-15 14:39 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:使用 asyncio 包处理并发 并发是指一次处理多件事。 并行是指一次做多件事。 二者不同,但是有联系。 一个关于结构,一个关于执行。 并发用于制定方案,用来解决可能(但未必)并行的问题。 ——Rob Pike, Go 语言的创造者之一 本章介绍 asyncio 包,这个包使用事件循环驱动的协程实 阅读全文
posted @ 2025-02-15 14:38 superzzh 阅读(10) 评论(0) 推荐(0) 编辑
摘要:使用期物处理并发 抨击线程的往往是系统程序员,他们考虑的使用场景对一般的应用程序员来说,也许一生都不会遇到……应用程序员遇到的使用场景,99% 的情况下只需知道如何派生一堆独立的线程,然后用队列收集结果。 Michele Simionato, 深度思考 Python 的人 本章主要讨论 concur 阅读全文
posted @ 2025-02-15 14:38 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:协程 如果 Python 书籍有一定的指导作用,那么(协程就是)文档最匮乏、最鲜为人知的 Python 特性,因此表面上看是最无用的特性。 ——David Beazley, Python 图书作者 在“生成器”章节中我们认识了 yield 语句。但 yield 的作用不只是在生成器运行过程中返回一个 阅读全文
posted @ 2025-02-15 14:38 superzzh 阅读(5) 评论(0) 推荐(0) 编辑
摘要:上下文管理和 else 块 最终,上下文管理器可能几乎与子程序(subroutine)本身一样重要。目前,我们只了解了上下文管理器的皮毛……Basic 语言有 with 语句,而且很多语言都有。但是,在各种语言中 with 语句的作用不同,而且做的都是简单的事,虽然可以避免不断使 用点号查找属性,但 阅读全文
posted @ 2025-02-15 14:37 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:可迭代的对象、迭代器和生成器 当我在自己的程序中发现用到了模式,我觉得这就表明某个地方出错了。程序的形式应该仅仅反映它所要解决的问题。代码中其他任何外加的形式都是一个信号,(至少对我来说)表明我对问题的抽象还不够深——这通常意味着自己正在手动完成事情,本应该通过写代码来让宏的扩展自动实现。 ——Pa 阅读全文
posted @ 2025-02-15 14:37 superzzh 阅读(4) 评论(0) 推荐(0) 编辑
摘要:正确重载运算符 有些事情让我不安,比如运算符重载。我决定不支持运算符重载,这完全是个个人选择,因为我见过太多 C++ 程序员滥用它。 ——James Gosling, Java 之父 本章讨论的内容是: Python 如何处理中缀运算符(如 + 和 |)中不同类型的操作数 使用鸭子类型或显式类型检查 阅读全文
posted @ 2025-02-15 14:37 superzzh 阅读(4) 评论(0) 推荐(0) 编辑
摘要:继承的优缺点 (我们)推出继承的初衷是让新手顺利使用只有专家才能设计出来的框架。 ——Alan Klay, "The Early History of Smalltalk" 本章探讨继承和子类化,重点是说明对 Python 而言尤为重要的两个细节: 子类化内置类型的缺点 多重继承和方法解析顺序(MR 阅读全文
posted @ 2025-02-15 14:36 superzzh 阅读(4) 评论(0) 推荐(0) 编辑
摘要:接口:从协议到抽象基类 抽象类表示接口。 ——Bjarne Stroustrup, C++ 之父 本章讨论的话题是接口:从鸭子类型的代表特征动态协议,到使接口更明确、能验证实现是否符合规定的抽象基类(Abstract Base Class, ABC)。 接口的定义:对象公开方法的子集,让对象在系统中 阅读全文
posted @ 2025-02-15 14:36 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:序列的修改、散列和切片 不要检查它是不是鸭子、它的叫声像不像鸭子、它的走路姿势像不像鸭子,等等。具体检查什么取决于你想用语言的哪些行为。(comp.lang.python, 2000 年 7 月 26 日) ——Alex Martelli 本章在 Vector2d 基础上进行改进以支持多维向量。不过 阅读全文
posted @ 2025-02-15 14:36 superzzh 阅读(3) 评论(0) 推荐(0) 编辑
摘要:符合 Python 风格的对象 绝对不要使用两个前导下划线,这是很烦人的自私行为。 ——Ian Bicking pip, virtualenv 和 Paste 等项目的创建者 得益于 Python 数据模型,自定义类型的行为可以像内置类型那样自然。 实现如此自然的行为,靠的不是继承,而是鸭子类型(d 阅读全文
posted @ 2025-02-15 14:35 superzzh 阅读(3) 评论(0) 推荐(0) 编辑
摘要:对象引用、可变性和垃圾回收 Python 使用引用式变量:变量和变量名是两个不同的东西。 在 Python 中,变量不是一个存储数据的盒子,而是一个针对盒子的标注。同时,一个盒子上可以有很多标注,也可以一个都没有。 a = [1, 2, 3] b = a a.append(4) print(b) # 阅读全文
posted @ 2025-02-15 14:35 superzzh 阅读(4) 评论(0) 推荐(0) 编辑
摘要:函数装饰器与闭包 有很多人抱怨,把这个特性命名为“装饰器”不好。主要原因是,这个名称与 GoF 书使用的不一致。装饰器这个名称可能更适合在编译器领域使用,因为它会遍历并注解语法书。 —“PEP 318 — Decorators for Functions and Methods” 本章的最终目标是解 阅读全文
posted @ 2025-02-15 14:35 superzzh 阅读(5) 评论(0) 推荐(0) 编辑
摘要:使用一等函数实现设计模式 符合模式并不表示做得对。 ——Ralph Johnson: 经典的《设计模式:可复用面向对象软件的基础》的作者之一 本章将对现有的一些设计模式进行简化,从而减少样板代码。 策略模式 实现策略模式,可以依赖 abc.ABC 和 abc.abstractmethod 来构建抽象 阅读全文
posted @ 2025-02-15 14:34 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:一等函数 不管别人怎么说或怎么想,我从未觉得 Python 受到来自函数式语言的太多影响。我非常熟悉命令式语言,如 C 和 Algol 68,虽然我把函数定为一等对象,但是我并不把 Python 当作函数式编程语言。 —— Guido van Rossum: Python 仁慈的独裁者 在 Pyth 阅读全文
posted @ 2025-02-15 14:34 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:文本和字节序列 人类使用文本,计算机使用字节序列 —— Esther Nam 和 Travis Fischer "Character Encoding and Unicode in Python" Python 3 明确区分了人类可读的文本字符串和原始的字节序列。 隐式地把字节序列转换成 Unico 阅读全文
posted @ 2025-02-15 14:34 superzzh 阅读(6) 评论(0) 推荐(0) 编辑
摘要:字典和集合 字典这个数据结构活跃在所有 Python 程序的背后,即便你的源码里并没有直接用到它。 ——A. M. Kuchling 可散列对象需要实现 __hash__ 和 __eq__ 函数。 如果两个可散列对象是相等的,那么它们的散列值一定是一样的。 # 字典提供了很多种构造方法 a = di 阅读全文
posted @ 2025-02-15 14:33 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:序列构成的数组 你可能注意到了,之前提到的几个操作可以无差别地应用于文本、列表和表格上。 我们把文本、列表和表格叫作数据火车……FOR 命令通常能作用于数据火车上。 ——Geurts、Meertens 和 Pemberton ABC Programmer’s Handbook 容器序列 list、t 阅读全文
posted @ 2025-02-15 14:31 superzzh 阅读(6) 评论(0) 推荐(0) 编辑
摘要:Python 数据类型 Guido 对语言设计美学的深入理解让人震惊。我认识不少很不错的编程语言设计者,他们设计出来的东西确实很精彩,但是从来都不会有用户。Guido 知道如何在理论上做出一定妥协,设计出来的语言让使用者觉得如沐春风,这真是不可多得。 ——Jim Hugunin Jython 的作者 阅读全文
posted @ 2025-02-15 14:31 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:让我们从两行最简单的 Python 代码开始。 >>> name = 'piglei' >>> print(f'Hello {name}!') Hello piglei! 这是一个“Hello World”程序,你也许已经见过它无数次,对里面的每个字母都了如指掌。但你可能从未意识到,上面两行代码,刚 阅读全文
posted @ 2025-02-15 14:29 superzzh 阅读(4) 评论(0) 推荐(0) 编辑
摘要:前言 2016 年,Linux 操作系统的创造者 Linus Torvalds 参加了一场TED 访谈节目。整个节目的前半部分,主要是他在讲如何在家光着膀子写出 Linux 的故事,没有涉及太多编程相关的事情。 不过在访谈快结束时,突然出现了一个有趣的环节。主持人向 Linus 提问道:“你曾说过更 阅读全文
posted @ 2025-02-15 14:28 superzzh 阅读(6) 评论(0) 推荐(0) 编辑
摘要:前言 在这篇文章中,我将继续介绍 SOLID 原则剩下的两位成员:I(接口隔离原则) 和 D(依赖倒置原则)。为了方便,这篇文章将会使用先 D 后 I 的顺序。 D:依赖倒置原则 软件是由一个个模块组合而成的。当你跟别人说:“我在写一个很复杂的软件”,其实你并不是直接在写那个软件,你只是在编写它的一 阅读全文
posted @ 2025-02-15 14:28 superzzh 阅读(3) 评论(0) 推荐(0) 编辑
摘要:前言 在这篇文章中,我将继续介绍 SOLID 原则的第三位成员:L(里氏替换原则)。 里氏替换原则与继承 在开始前,我觉得有必要先提一下 继承(Inheritance)。因为和前面两条非常抽象的原则不同,“里氏替换原则”是一条非常具体的,和类继承有关的原则。 在 OOP 世界里,继承算是一个非常特殊 阅读全文
posted @ 2025-02-15 14:28 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:前言 Python 是一门支持多种编程风格的语言,面对相同的需求,拥有不同背景的程序员可能会写出风格迥异的 Python 代码。比如一位习惯编写 C 语言的程序员,通常会定义一大堆函数来搞定所有事情,这是“过程式编程”的思想。而一位有 Java 背景的程序员则更倾向于设计许多个相互关联的类(clas 阅读全文
posted @ 2025-02-15 14:27 superzzh 阅读(4) 评论(0) 推荐(0) 编辑
摘要:前言 在这个世界上,人们每天都在用 Python 完成着不同的工作。而文件操作,则是大家最常需要解决的任务之一。使用 Python,你可以轻松为他人生成精美的报表,也可以用短短几行代码快速解析、整理上万份数据文件。 当我们编写与文件相关的代码时,通常会关注这些事情:我的代码是不是足够快?我的代码有没 阅读全文
posted @ 2025-02-15 14:27 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:前言 编程,其实和玩电子游戏有一些相似之处。你在玩不同游戏前,需要先学习每个游戏的不同规则,只有熟悉和灵活运用游戏规则,才更有可能在游戏中获胜。 而编程也是一样,不同编程语言同样有着不一样的“规则”。大到是否支持面向对象,小到是否可以定义常量,编程语言的规则比绝大多数电子游戏要复杂的多。 当我们编程 阅读全文
posted @ 2025-02-15 14:27 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:前言 模块(Module)是我们用来组织 Python 代码的基本单位。很多功能强大的复杂站点,都由成百上千个独立模块共同组成。 虽然模块有着不可替代的用处,但它有时也会给我们带来麻烦。比如,当你接手一个新项目后,刚展开项目目录。第一眼就看到了攀枝错节、难以理解的模块结构,那你肯定会想: “这项目也 阅读全文
posted @ 2025-02-15 14:26 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:前言 装饰器 (Decorator) 是 Python 里的一种特殊工具,它为我们提供了一种在函数外部修改函数的灵活能力。它有点像一顶画着独一无二 @ 符号的神奇帽子,只要将它戴在函数头顶上,就能悄无声息的改变函数本身的行为。 你可能已经和装饰器打过不少交道了。在做面向对象编程时,我们就经常会用到 阅读全文
posted @ 2025-02-15 14:26 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:前言 循环是一种常用的程序控制结构。我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行。而“循环”,则是实现让机器不断重复工作的关键概念。 在循环语法方面,Python 表现的即传统又不传统。它虽然抛弃了常见的 for (init; condition; incr 阅读全文
posted @ 2025-02-15 14:25 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:前言 循环是一种常用的程序控制结构。我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行。而“循环”,则是实现让机器不断重复工作的关键概念。 在循环语法方面,Python 表现的即传统又不传统。它虽然抛弃了常见的 for (init; condition; incr 阅读全文
posted @ 2025-02-15 14:24 superzzh 阅读(3) 评论(0) 推荐(0) 编辑
摘要:前言 如果你用 Python 编程,那么你就无法避开异常,因为异常在这门语言里无处不在。打个比方,当你在脚本执行时按 ctrl+c 退出,解释器就会产生一个 KeyboardInterrupt 异常。而 KeyError、ValueError、TypeError 等更是日常编程里随处可见的老朋友。 阅读全文
posted @ 2025-02-15 14:24 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:序言 毫无疑问,函数是 Python 语言里最重要的概念之一。在编程时,我们将真实世界里的大问题分解为小问题,然后通过一个个函数交出答案。函数既是重复代码的克星,也是对抗代码复杂度的最佳武器。 如同大部分故事都会有结局,绝大多数函数也都是以返回结果作为结束。函数返回结果的手法,决定了调用它时的体验。 阅读全文
posted @ 2025-02-15 14:23 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:序言 “容器”这两个字很少被 Python 技术文章提起。一看到“容器”,大家想到的多是那头蓝色小鲸鱼:Docker,但这篇文章和它没有任何关系。本文里的容器,是 Python 中的一个抽象概念,是对专门用来装其他对象的数据类型的统称。 在 Python 中,有四类最常见的内建容器类型:列表(lis 阅读全文
posted @ 2025-02-15 14:23 superzzh 阅读(3) 评论(0) 推荐(0) 编辑
摘要:序言 数字是几乎所有编程语言里最基本的数据类型,它是我们通过代码连接现实世界的基础。在 Python 里有三种数值类型:整型(int)、浮点型(float)和复数(complex)。绝大多数情况下,我们只需要和前两种打交道。 整型在 Python 中比较让人省心,因为它不区分有无符号并且永不溢出。但 阅读全文
posted @ 2025-02-15 14:22 superzzh 阅读(2) 评论(0) 推荐(0) 编辑
摘要:序言 编写条件分支代码是编码过程中不可或缺的一部分。 如果用道路来做比喻,现实世界中的代码从来都不是一条笔直的高速公路,而更像是由无数个岔路口组成的某个市区地图。我们编码者就像是驾驶员,需要告诉我们的程序,下个路口需要往左还是往右。 编写优秀的条件分支代码非常重要,因为糟糕、复杂的分支处理非常容易让 阅读全文
posted @ 2025-02-15 14:21 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:『Python 工匠』是什么? 我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。 在雕琢代码的过程中,有大工程:比如应该用什么架构、哪种设计模式。也有更多的小细节,比如何时使用异常(Exceptions)、或怎么给变量起名。那些真正优秀的代码,正是 阅读全文
posted @ 2025-02-15 14:20 superzzh 阅读(1) 评论(0) 推荐(0) 编辑
摘要:title: Retrieval-Augmented Generation tags: - 大模型 date: "2024-10-24" 大模型的商业化落地挑战 更好地控制大模型生成: 生成 优点:内容的多样性、创造性 缺点:存在不可控制的问题 检索 优点:可控 缺点:内容具有局限性 结合两者:检索 阅读全文
posted @ 2025-02-15 13:50 superzzh 阅读(8) 评论(0) 推荐(0) 编辑
摘要:提示工程的目的 我们需要给AI下发命令,让AI去完成,只有提出了具体的要求,AI才知道如何去完成。 好的Prompt需要不断调优。 说清楚自己到底想要什么,要具体! 不要让机器去猜测太多。为了不让机器去猜测,我们就需要告诉细节。 提示工程有一些技巧,灵活掌握,事半功倍。 提示词构成 指示(Instr 阅读全文
posted @ 2025-02-15 13:13 superzzh 阅读(6) 评论(0) 推荐(0) 编辑
摘要:如何获取OpenAI Api Key? 访问https://platform.openai.com/api-keys,即可申请API-Key。 OpenAI提供了哪些资源? 在https://platform.openai.com/docs/models中,列出了可以调用的模型。 截止本文上传时间, 阅读全文
posted @ 2025-02-14 23:54 superzzh 阅读(16) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示