标准库

28 个模块、299 个函数,外加 30 个内建。函数名和参数说明都是中文 —— 所以查文档这件事,在基石里通常不需要。

怎么用

先导入模块,再用 `模块名.函数名(...)` 调用导入 数学

打印(数学.开方(16))
打印(数学.最大公约数(12, 18))

内建不用导入。打印、长度、范围、 整数 这些随时可用;只有标准库模块才要 导入。 不知道有哪些名字时:jishi --ai-card 打出全量清单。

模块(28 个)

HTTP服务端4 个函数

调用说明
解析请求(请求文本)把一段**原始 HTTP 请求**文本解析成字典。纯函数,不碰 socket。
构造响应(状态=200, 正文='', 内容类型='text/plain; charset=utf-8', 头=空)把「状态 + 正文 + 头」拼成一段**完整的 HTTP 响应**文本。纯函数。
空闲端口()问系统要一个**当前空闲的端口**,返回它的号。
启动(端口=8000, 处理函数=空, 最多请求数=0)起一个 HTTP 服务,**阻塞**着收请求,每个请求调一次 `处理函数`。

html11 个函数

调用说明
取文本(片段)从一段 HTML 里取出**纯文本**:去标签、解实体、把连续空白压成一个空格。
取链接(页面)把页面里所有 `<a href="…">文字</a>` 取成 `[[文字, 地址], …]`。
取表格(页面)把页面里**第一张** `<table>` 取成「行列表的列表」:每行是各单元格文本。
转义(值)把文本里的 HTML 特殊字符换成实体(`&` `<` `>` `"` `'` 五个都换)。
原样(值)标记这段内容是**已经生成好的 HTML**,放进标签里时不再转义。
标签(名, 内容='', 属性=空)生成一个标签:`标签("p", "你好", {"类名": "提示"})` → `<p class="提示">你好</p>`。
空元素(名, 属性=空)生成自闭合标签:`空元素("img", {"src": "a.png"})` → `<img src="a.png" />`。
链接(文字, 地址, 属性=空)生成 `<a href="…">文字</a>`。地址与文字都会被转义。
属性文本(值)把文本转义成可以安全放进**属性值**的形式(引号也转)。
有序列表(项目, 属性=空)生成 `<ol><li>…</li>…</ol>`;每项内容都会被转义。
无序列表(项目, 属性=空)生成 `<ul><li>…</li>…</ul>`;每项内容都会被转义。

json5 个函数

调用说明
转文本(对象, 缩进=空)把列表/字典等转成 JSON 文本(中文不转义成 \uXXXX)。
解析(文本)把 JSON 文本解析成列表/字典等。
有效(文本)这段文本是不是**合法的 JSON**(返回真/假,不抛错)。
读文件(路径)从文件读入并解析 JSON。
写文件(路径, 对象, 缩进=空)把对象转成 JSON 并写入文件(中文不转义)。

加密10 个函数

调用说明
摘要(文本, 算法='sha256')返回文本的摘要(十六进制小写)。算法可为 md5/sha1/sha256/sha512。
md5(文本)返回文本的 MD5 摘要。
sha1(文本)返回文本的 SHA-1 摘要。
sha256(文本)返回文本的 SHA-256 摘要。
sha512(文本)返回文本的 SHA-512 摘要。
文件摘要(文件路径, 算法='sha256')返回文件的摘要(分块读取,不一次性载入内存)。
支持的算法()返回可用的摘要算法名列表。
HMAC(键, 文本, 算法='sha256')用**密钥**给文本做 HMAC 签名(十六进制小写)。
口令摘要(口令, 盐, 迭代=100000, 算法='sha256')把**口令**揉进摘要(PBKDF2),十六进制小写。存口令只该存它。
安全随机字节(长度)生成一串**不可预测**的随机字节,返回**字节**。

压缩6 个函数

调用说明
打包(zip路径)把若干文件或目录打包进一个 zip。返回 zip 路径。
解压(zip路径, 目标目录='')把 zip 解压到目标目录(默认当前目录),返回目标目录。
列出内容(zip路径)返回 zip 里的条目名列表(含目录,按原始顺序)。
压缩文件(gz路径, 内容)把**一份内容**压成 `.gz` 单文件,返回这个 gz 的路径。
解压文件(gz路径)把 `.gz` 单文件解开,返回里面的文本(按 UTF-8 解码)。
解压成员(zip路径, 成员名)只取出 zip 里的**一个成员**,返回它的字节(不用把整包解开)。

参数5 个函数

调用说明
新建(名字, 说明='')新建一个参数解析器,返回它的**句柄**(后面所有调用都带着它)。
选项(句柄, 名, 默认=空, 说明='')给解析器声明一个取值选项:`--名 值`(也接受 `--名=值`)。
标志(句柄, 名, 说明='')给解析器声明一个开关:写 `--名` 就是真,不写就是假。
用法(句柄)生成用法说明(自动包含已声明的选项)。
解析(句柄, 参数们=空)解析参数列表,返回上面文档里说的那个字典。

容器9 个函数

调用说明
计数(可迭代)数每个元素出现了几次,返回「元素 → 次数」的字典。
最多(可迭代, 个数=1)出现次数最多的前 `个数` 个,返回 [[元素, 次数], …](降序)。
按值排序(频次字典, 降序=真)把「元素 → 次数」这类字典按**值**排成 [[元素, 值], …]。
分组(可迭代, 键函数)按「键函数(元素)」的返回值把元素分组,返回「键 → [元素, …]」。
取前(可迭代, 个数)取前 `个数` 个元素(不足就给全部)。
取后(可迭代, 个数)取后 `个数` 个元素(不足就给全部)。
分块(可迭代, 每块个数)把序列切成若干等长小块(最后一块可能短)。
索引表(可迭代)把序列做成「值 → **首次**出现的下标」字典,让「查一次」从 O(n) 变 O(1)。
深拷贝(值)把列表 / 字典**递归复制**一份;改副本不影响原件。

对比5 个函数

调用说明
逐行(旧, 新, 带行号=假)返回逐行的差异说明列表,每项形如 `["+", 行号, 内容]` 或 `[" ", 行号, 内容]`。
统一(旧, 新, 上下文=3)返回**统一格式**的差异文本(`--- 旧` / `+++ 新` / `@@` 分块 / `+`-` 行)。
并排(旧, 新, 宽=30)返回**左右并排**的差异文本,适合打给人看(`|` 分隔两栏)。
相似度(甲, 乙)返回两段文本的相似度(0 到 1;1 表示完全一样)。
最相似(目标, 候选)从候选列表里挑出与目标**最相似**的那一项(并列时取最靠前的)。

并发3 个函数

调用说明
批量摘要(路径们, 算法='sha256', 线程数=4)**同时**算一批文件的摘要,返回的列表**与输入一一对应**(同一顺序)。
批量读(路径们, 线程数=4)**同时**读一批文件的内容,每一项是 `字节`(顺序与输入一致)。
并行取(网址们, 线程数=4)**同时**取一批网址的正文(GET),顺序与输入一致。

数学18 个函数

调用说明
开方(x)返回 x 的平方根。
平方(x)返回 x 的平方(x * x)。
幂(底数, 指数)返回 底数 的 指数 次方(整数次方结果保持整数)。
绝对值(x)返回 x 的绝对值。
向上取整(x)返回大于等于 x 的最小整数。
向下取整(x)返回小于等于 x 的最大整数。
四舍五入(x, 位数=0)把 x 四舍五入到指定小数位数。
正弦(角度_弧度)返回弧度角的正弦值。
余弦(角度_弧度)返回弧度角的余弦值。
正切(角度_弧度)返回弧度角的正切值。
角度转弧度(角度)把角度(0-360)换算成弧度。
对数(x, 底=…)返回以「底」为底的对数,默认自然对数。
常用对数(x)返回以 10 为底的对数。
最大公约数(a, b)返回两个整数的最大公约数。
最小公倍数(a, b)返回两个整数的最小公倍数。
阶乘(n)返回 n 的阶乘(1×2×…×n)。
限制(值, 底, 顶)把 值 卡在 [底, 顶] 区间内(小了给底,大了给顶)。
符号(值)返回 -1、0 或 1(值分别是负数、零、正数)。

数据库15 个函数

调用说明
打开(路径)打开(没有就新建)一个 SQLite 库,返回**库句柄**。
关闭(库)关掉这个库(幂等:没打开过、或已经关过了,都不报错)。
表们(库)列出这个库里所有表的名字(按名字排)。
有表(库, 表名)表在不在。
建表(库, 表名, 字段们)建一张表(已经有了就不动它)。
建索引(库, 表名, 字段们, 唯一=假)给字段建索引(已经有了就不动)—— 数据一多,按这些字段查就从「全表扫」
插入(库, 表名, 记录)插一条记录(`记录` 是字典:字段 → 值),返回新行的 `id`。
批量插入(库, 表名, 记录们)一次插很多条(**同一个事务**),返回插了几条。
修改(库, 表名, 条件, 新值)把**满足条件**的行改成新值(`新值` 是字典:字段 → 新值),
删除(库, 表名, 条件)删掉**满足条件**的行,返回删了几行。
查询(库, 表名, 条件=空, 排序=空, 倒序=假, 条数=0)查出**记录列表**(每条是一个字典)。
条数(库, 表名, 条件=空)数一数有多少行(给了条件就只数满足的)。
汇总(库, 表名, 按, 求和, 条件=空)按「按」字段分组,对「求和」字段做统计,返回 `{组: 汇总字典}`。
执行(库, SQL)直接跑**一句写操作的 SQL**(INSERT / UPDATE / DELETE / CREATE …),
执行查询(库, SQL)直接跑一句 SELECT,返回**记录列表**。

文件21 个函数

调用说明
写文本(路径, 内容)把内容写进文件(覆盖原有内容)。
读文本(路径)读取整个文本文件的内容。
读字节(路径)把整个文件读成**字节**(不做任何编码转换)。
写字节(路径, 字节)把字节写进文件(覆盖原有内容)。
追加文本(路径, 内容)把内容追加到文件末尾(文件不存在则创建)。
写行(路径, 行列表)把列表里的每一行写进文件(自动加换行,覆盖原内容)。
按行读(路径)按行读取文件,返回每行内容的列表(不含换行符)。
文件存在(路径)判断文件或目录是否存在。
是文件(路径)判断路径是不是一个文件。
是目录(路径)判断路径是不是一个目录。
列出目录(路径='.')列出目录里的所有文件和子目录名字,返回列表。
创建目录(路径)创建目录(自动创建中间层级,已存在则不报错)。
删除文件(路径)删除文件。
复制(源路径, 目标路径)复制文件。
文件大小(路径)返回文件的字节数。
原子写(路径, 内容)**原子写入**:先写同目录下的临时文件,再改名覆盖目标。
路径拼接()把几段路径拼在一起,用 / 分隔。
文件名(路径)取出路径里的文件名部分。
扩展名(路径)取出文件的扩展名(带点),例如 a.jsh → .jsh。
追加字节(路径, 内容)把字节**追加到文件末尾**(文件不存在就新建),返回写进了多少字节。
复制目录(源目录, 目标目录)把**整棵目录树**复制到目标位置(源目录下的层级原样保留),返回目标路径。

文本21 个函数

调用说明
拼接(序列, 分隔符='')把列表里的文本用分隔符连成一段。
显示宽度(值)这段文本在**等宽终端**里占几列 —— 一个汉字算 2,组合符算 0。
居中(文本, 宽度, 填充=' ')文本居中,两侧补到指定**显示宽度**(一个汉字算 2 列,见 `显示宽度`)。
左对齐(文本, 宽度, 填充=' ')文本靠左,右侧补到指定**显示宽度**(适合做表格对齐)。
右对齐(文本, 宽度, 填充=' ')文本靠右,左侧补到指定**显示宽度**(适合数字对齐)。
补零(文本, 宽度)在左侧补 0 到指定宽度,比如 补零(7, 3) → "007"。
重复(文本, 次数)把文本重复若干次。
计数(文本, 子串)子串在文本中出现的次数。
是数字(文本)是否全是数字字符。
是字母(文本)是否全是字母(中文也算字母)。
是空白(文本)是否全是空白字符。
是大写(文本)字母是否全是大写。
是小写(文本)字母是否全是小写。
首字母大写(文本)首字母大写,其余小写。
去前缀(文本, 前缀)如果文本以前缀开头就去掉它,否则原样返回。
去后缀(文本, 后缀)如果文本以后缀结尾就去掉它,否则原样返回。
格式化(模板)把 {} 占位符依次替换成参数:格式化("{}今年{}岁", "小明", 12)。
切成三段(文本, 分隔符)按第一个分隔符切成三段:[前, 分隔符, 后]。
按行拆分(文本)按换行拆成行的列表。
截断(文本, 宽度, 省略号='…')超长就截断并加省略号,否则原样返回(`宽度` 含省略号本身)。
填充(文本, 宽度, 填充字符=' ')把文本**居中**填充到指定**显示宽度**(两侧补同样的字符)。

日志8 个函数

调用说明
级别们()列出所有可用的级别名(从松到严)。
设级别(级别)设置输出级别:低于它的调用会被静默丢掉。
取级别()返回当前级别名。
设前缀(前缀)给每条日志加一个固定前缀(比如模块名)。给空串就取消。
调试()调试级输出(默认不显示,要先 `设级别("调试")`)。
信息()信息级输出(默认显示)。
警告()警告级输出(写到标准错误)。
错误()错误级输出(写到标准错误)。**不会**中止程序,只是记一笔。

日期17 个函数

调用说明
今天()返回今天的日期,例如 2026-09-01。
解析(日期文本)把「年-月-日」文本解析成内部日期(供本模块函数使用)。
格式化(日期文本, 格式='%Y-%m-%d')把日期按指定格式输出,例如 格式化("2026-09-01", "%Y年%m月%d日")。
加天数(天数, 日期文本)返回日期加上 N 天后的日期。
减天数(天数, 日期文本)返回日期减去 N 天后的日期。
加月(月数, 日期文本)返回日期加上 N 个月后的日期。
加年(年数, 日期文本)返回日期加上 N 年后的日期(`2月29日` 落在平年时会「收」到 `2月28日`)。
解析ISO(文本)把 ISO 8601 文本解析成日期(`年-月-日`)。
相差天数(日期文本1, 日期文本2)返回两个日期相差的天数(日期1 减 日期2,可为负)。
早于(日期文本1, 日期文本2)日期1 是否早于日期2。
晚于(日期文本1, 日期文本2)日期1 是否晚于日期2。
相等(日期文本1, 日期文本2)两个日期是否相同。
星期名(日期文本)返回日期是星期几:一/二/三/四/五/六/日。
今年()返回当前年份。
本月()返回当前月份(1-12)。
本年天数()返回当前年份一共有多少天(闰年 366,平年 365)。
月天数(年, 月)返回 **某年某月有几天**(闰年的 2 月自动是 29)。

时间11 个函数

调用说明
现在()返回当前的日期和时间,例如 2026-09-01 13:40:00。
今天()返回今天的日期,例如 2026-09-01。
此刻()返回当前时间的字典:年/月/日/时/分/秒/星期。
时间戳()返回当前的时间戳(从 1970 年开始的秒数)。
格式化时间戳(时间戳)把时间戳转成「年-月-日 时:分:秒」文本。
睡眠(秒)暂停指定的秒数。
高精度时间()返回高精度计时值(用于测量代码耗时)。
星期名(日期文本)返回日期是星期几:一/二/三/四/五/六/日。
加天数(天数, 日期文本)返回日期加上 N 天后的日期文本。
计时(名字='')计时器:`用 时间.计时("建索引") 为 t:`。
时区偏移()返回本机相对 UTC 的**时区偏移**,形如 `+08:00` / `-05:00`。

标识3 个函数

调用说明
唯一标识(去掉横线=假)返回一个全球唯一标识(UUID 第 4 版,随机生成)。
唯一标识短()返回一个**较短**的唯一标识(22 个字符,URL 安全)。
唯一标识字节()返回 16 个字节(0-255 的整数列表)形式的唯一标识。

正则6 个函数

调用说明
匹配(模式, 文本)从头匹配:文本开头是否符合模式,返回布尔。
搜索(模式, 文本)在文本中搜索第一个符合模式的内容,返回匹配文本(找不到返回空文本)。
查找全部(模式, 文本)找出文本中所有符合模式的内容,返回匹配文本列表。
替换(模式, 替换为, 文本)把文本中所有符合模式的部分替换成新内容。
拆分(模式, 文本)按模式把文本拆分成列表。
分组(模式, 文本)搜索并返回所有分组(含第 0 组完整匹配)。找不到返回空列表。

测试11 个函数

调用说明
重置()清空已记录的用例(写多批测试时用)。
用例(名字, 函数=空)跑一个用例:`测试.用例("名字", 函数():…)`。
相等(实际, 期望, 说明='')断言 实际 == 期望(失败时把两边都打出来)。
不等(实际, 不该等于, 说明='')断言 实际 != 不该等于。
为真(条件, 说明='')断言条件为真。
为假(条件, 说明='')断言条件为假。
近似(实际, 期望, 误差=1e-09, 说明='')断言 实际 与 期望 的差不超过 误差(浮点数比较用它)。
包含(容器, 元素, 说明='')断言容器里有这个元素。
抛出(函数, 说明='')断言这段代码会报错,返回那个异常(可以再看它的类型)。
统计()返回汇总数据:`{"用例", "通过", "失败", "出错"}`。
汇总()打印汇总;**有任何失败就报错**(CLI 于是以退出码 1 结束)。

系统14 个函数

调用说明
系统名()返回操作系统名:Windows / Linux / Darwin。
系统版本()返回操作系统版本描述。
机器架构()返回机器架构,如 AMD64。
处理器()返回处理器描述。
当前目录()返回当前工作目录。
改目录(路径)切换当前工作目录,返回切换后的目录。
环境变量(名字, 默认='')读取环境变量;不存在时返回默认值。
设环境变量(名字, 值)设置一个环境变量。
执行(命令, 超时=10.0)执行一条外部命令,返回标准输出(合并 stdout+stderr)。
退出码(命令, 超时=10.0)执行命令并只返回退出码(0 表示成功)。
打开(路径)用系统的**默认程序**打开一个文件(或网址),成功返回真、失败返回假。
主机名()返回当前机器的主机名。
参数()返回脚本收到的命令行参数(不含脚本名本身)。
CPU核数()返回这台机器**能并行干活的 CPU 核数**(决定「开几路并行」时用)。

统计10 个函数

调用说明
求和(数据)返回所有数字的和(空列表返回 0)。
平均(数据)返回算术平均数。
中位数(数据)返回中位数(偶数个时取中间两个的平均)。
众数(数据)返回出现次数最多的值。
方差(数据, 样本=假)返回方差(默认**总体方差**;`样本=真` 时用样本方差,除以 n-1)。
标准差(数据, 样本=假)返回标准差(方差的开方)。`样本=真` 时用样本标准差。
极差(数据)返回最大值与最小值的差。
分位数(数据, p)返回第 p 分位数(p 取 0–1;0.5 就是中位数,0.25 是下四分位)。
去极值平均(数据, 去掉个数=1)去掉最大和最小的各「去掉个数」个之后求平均(比赛评分常用)。
加权平均(数据, 权重)返回加权平均数:每个数乘自己的权重再求和,除以权重之和。

编码10 个函数

调用说明
base64编码(值)把文本或字节编码成 base64 文本(标准字母表,**带 `=` 填充**)。
base64解码(值)把 base64 文本还原成**字节**。
十六进制编码(值, 大写=假)把文本或字节编码成十六进制文本。默认小写。
十六进制解码(值)把十六进制文本还原成**字节**(源码里「写死一串字节」就靠它)。
url编码(值, 保留斜杠=真)把文本编码成可以安全放进 URL 的形式(中文会变成 `%E4%B8%AD` 这样)。
url解码(值)把 URL 编码的文本还原(`%E4%B8%AD` → `中`)。
文本字节(值)把文本按 UTF-8 转成**字节**。
字节文本(值)把字节按 UTF-8 还原成文本。
GBK文本(值)把 **GBK 编码的字节**还原成文本(国内大量老的 CSV / TXT 就是 GBK)。
文本GBK(值)把文本按 **GBK** 转成字节(写给只认 GBK 的旧软件用)。

网络6 个函数

调用说明
获取(网址, 超时=…, 请求头=空)用 GET 请求网址,返回响应文本。
提交(网址, 数据='', 超时=…, 请求头=空)用 POST 提交**表单**数据(文本),返回响应文本。
提交JSON(网址, 对象, 超时=…, 请求头=空)用 POST 提交 **JSON**,返回响应文本。
获取JSON(网址, 超时=…, 请求头=空)用 GET 请求一个返回 JSON 的接口,解析成列表/字典。
获取详情(网址, 超时=…, 请求头=空)GET 一个网址,把**状态码 / 响应头 / 正文**一起给你,**非 2xx 不报错**。
下载(网址, 路径, 超时=…, 请求头=空)GET 一个网址,把响应**原始字节**写进文件,返回字节数。

表格18 个函数

调用说明
读表格(路径)读取带表头的 CSV 文件,返回表格对象。
写表格(路径, 行列表)把行列表写进 CSV(覆盖原文件)。第一行应为表头。
写字典表格(路径, 字典列表)把字典列表写进 CSV(键作表头,来自第一个字典)。
读字典表格(路径)读取带表头的 CSV,返回字典列表:[{列名: 值}, ...]。
追加(路径, 行)往 CSV 文件末尾追加一行(文件不存在则创建,注意表头要自己保证)。
表头(t)返回表格的表头(列名列表)。
数据行(t)返回表格的所有数据行(不含表头)。
挑选(t, 列)从表格里挑出一列或多列。
筛选(t, 列名, 值)筛选出「列名」这一列的值等于「值」的行,返回新表格。
排序按(t, 列名, 倒序=假)按某一列排序,返回新表格;「倒序」为 真 时从大到小。
汇总(t, 列名)统计某数字列:个数/总和/平均/最大/最小。
分组汇总(t, 分组列, 值列)按「分组列」的取值分组,对「值列」做统计,返回 `{组: 汇总字典}`。
连接(表甲, 表乙, 键甲, 键乙='')按某一列把两张表**接起来**(只留两边都有的键),返回新表格。
从记录(记录们)把**字典列表**变成表格 —— JSON 接口回来的数据直接能做表格运算。
转记录(t)把表格变成**字典列表** —— 好喂给 `json.写文件` 或 `网络.提交JSON`。
转置(行列表)把「列表的列表」行列互换。
转文本(t)把表格渲染成**给人看**的等宽文本:表头 + 分隔线 + 对齐的数据行。
转TSV(t)把表格变成 **TSV 文本**(制表符分隔)—— 好粘进 Excel / 喂给别的程序。

路径24 个函数

调用说明
连接()把若干路径片段连接成一个路径(用系统分隔符)。
存在(路径)路径是否存在(文件或目录)。
是文件(路径)路径是否是一个已存在的文件。
是目录(路径)路径是否是一个已存在的目录。
绝对路径(路径)把相对路径转成绝对路径。
父目录(路径)返回路径的父目录。
文件名(路径)返回路径的最后一段(文件名或目录名)。
后缀(路径)返回文件后缀(含点,如 .txt),无后缀返回空文本。
无后缀名(路径)返回去掉后缀的文件名(如 a.txt → a)。
当前目录()返回当前工作目录。
主目录()返回当前用户主目录。
创建目录(路径, 递归=假)创建目录;递归=真 时自动创建缺失的父目录。返回目录路径。
删除(路径)删除文件或空目录,成功返回真;不存在返回假。
递归删除(路径)递归删除:文件直接删,目录连同**里面的所有东西**一起删;不存在返回假。
列出(路径)列出目录下所有条目(文件+子目录)的名字,按名字排序。
递归列出(路径, 后缀='')递归列出目录下所有文件(含子目录),返回**相对路径**列表,已排序。
按模式找(目录, 模式='*', 递归=真)按**通配模式**找出目录下匹配的文件,返回**相对路径**列表,已排序。
系统临时目录()返回**系统临时目录**的路径(只指出位置,不在磁盘上动任何东西)。
临时目录(前缀='')**新建**一个唯一的临时目录并返回它的路径。
临时文件(后缀='')**新建**一个唯一的空临时文件并返回它的路径(名字由系统生成)。
重命名(旧路径, 新路径)把文件或目录重命名,返回新路径。
大小(路径)返回文件大小(字节)。
修改时间(路径)返回文件最后修改时间(年-月-日 时:分:秒)。
分隔符()返回系统的**路径分隔符**:Windows 是 `\`,其余是 `/`。

迭代14 个函数

调用说明
归约(可迭代, 合并)把一串值**折叠**成一个(通用 `reduce`)。
分区(可迭代, 判定)按「判定」把一串值分成两堆:`[满足的, 不满足的]`。
分组(可迭代, 每组个数)按固定大小分组,返回 [[…], […]](最后组可能短)。
滑窗(可迭代, 窗口大小, 步长=1)滑动窗口:每次取连续 `窗口大小` 个元素,按 `步长` 往后挪。
去重(可迭代)按首次出现的顺序去重,返回列表(要集合类型就用内建 `集合()`)。
展开(嵌套)把「列表的列表」摊平一层。
取前(可迭代, 个数)取前 `个数` 个元素(不足就给全部)。
取后(可迭代, 个数)取后 `个数` 个元素(不足就给全部)。
求和(可迭代)求和(等价于内建 `总和`,放在这里方便 `迭代.求和` 一路写下来)。
计数(可迭代, 条件)数一数有多少元素满足条件(条件是「元素 → 真/假」的函数)。
累积(可迭代, 初值=0)前缀和:返回「每一步累加到目前」的列表,长度与原序列相同。
组合(可迭代, 取几个)从序列里挑 `取几个` 个(**不计顺序**),返回所有组合。
排列(可迭代, 取几个=-1)从序列里挑 `取几个` 个并**计顺序**,返回所有排列。
笛卡尔积()返回多个序列的笛卡尔积(每个序列里各取一个,所有搭配)。

配置8 个函数

调用说明
读JSON(路径, 默认=…)读一个 JSON 配置文件。
写JSON(路径, 数据, 缩进=2)把数据写成 JSON 文件(**中文原样保留**,不转成 \uXXXX)。返回文件路径。
读键值(路径, 默认=…, 分隔符='=')读「键 = 值」形式的简单配置文本,返回字典。
写键值(路径, 配置, 分隔符=' = ')把字典写成「键 = 值」形式的配置文本。返回文件路径。
取(配置, 路径, 默认=…)按点号路径取嵌套值:`取(配置, "数据库.端口", 5432)`。
设(配置, 路径, 值)按点号路径设置嵌套值,返回**新的**字典(不改原字典)。
合并(基础, 覆盖)深度合并两个字典(`覆盖` 里的值优先),返回新字典。
展开(配置, 前缀='')把嵌套字典**拍平**成「点号路径 → 值」的一层字典(`取` 的逆操作)。

随机6 个函数

调用说明
随机整数(最小, 最大)返回 [最小, 最大] 之间的随机整数(含两端)。
随机小数()返回 0 到 1 之间的随机小数。
随机选择(序列)从序列中随机挑一个元素。
洗牌(序列)把列表顺序打乱,返回新列表(不修改原列表)。
随机文本(长度, 字符集='字母数字')生成一个随机字符串(默认「字母数字」,也可给「数字」做验证码)。
按权重(选项们, 权重们)按权重随机挑一个元素(权重越大概率越高)。

内建函数(30 个)

名字作用
打印输出内容到屏幕
输入读取用户输入的一行文本
整数把值转成整数
小数把值转成小数
文本把值转成文本
精确精确("19.99"):转成精确小数,金额/对账用它避开浮点误差
序数序数(字符):取一个字符的 Unicode 码点,序数("中") 给 20013
字符字符(码点):由一个码点造出字符,字符(20013) 给「中」(与「序数」互为反函数)
打开打开(路径, 模式=读):返回文件对象,常配「用 … 为 f:」自动关闭
进入上下文供「用 … 为」脱糖使用:有 进入 就调用,否则返回对象自身
退出上下文供「用 … 为」脱糖使用:离开代码块时调用 退出 或 关闭
长度取列表、文本等的长度
范围生成一段整数序列(范围(5)、范围(1, 5)、范围(1, 5, 2))
带下标带下标(可迭代, 起始=0):造 [下标, 元素] 对,遍历时想同时拿到序号就用它
配对配对(甲, 乙, …):按位置把多个列表配成 [甲[i], 乙[i], …],长度取最短的那个
最大取列表中的最大值
最小取列表中的最小值
总和求列表中所有数的和
类型查看值的类型
位与位与(甲, 乙):按位与,标志位/掩码用
位或位或(甲, 乙):按位或
位异或位异或(甲, 乙):按位异或
位取反位取反(甲):按位取反,等价于 -甲 - 1
左移左移(值, 位数):值 × 2^位数
右移右移(值, 位数):值 ÷ 2^位数(向下取整)
反转反转列表或文本
断言断言(条件, 消息?):条件不成立就报错,用来尽早发现「不该发生」
是实例是实例(值, 类):判断值是不是这个类(或其子类)造出来的
超超():在方法里调基类的同名方法,例如 超().初始化(名字)
集合集合(可迭代):去重造集合(保持首次出现的顺序);集合() 造空集合

容器与对象的方法

类型方法
列表`追加`、`插入`、`移除`、`弹出`、`排序`、`反转`、`清空`、`索引`、`计数`、`包含`、`映射`、`过滤`、`排序按`、`归约`
字典`获取`、`键`、`值`、`包含`、`更新`、`合并`、`弹出`、`清空`
文本`拆分`、`替换`、`查找`、`大写`、`小写`、`去空白`、`开头是`、`结尾是`、`包含`、`转整数`、`转小数`
集合`添加`、`移除`、`丢弃`、`包含`、`并集`、`交集`、`差集`、`对称差`、`清空`、`转列表`、`复制`
文件`读`、`读行`、`读所有行`、`写`、`写行`、`关闭`、`刷新`、`位置`、`定位`
小数`舍入`、`绝对值`、`转文本`

异常与错误码

能被 捕获 的异常类型:`异常`、`运行期错误`、`类型错误`、`值错误`、`索引错误`、`键错误`、`除零错误`、`文件错误`、`断言错误`。

错误码按阶段分段(词法 E01xx / 语法 E02xx / 语义 E03xx / 运行期 E20xx),报错里会带上码与行列:

错误 E2002:类型错误(「整数」和「文本」不能做「+」运算)
  ┌─ 例子.jsh:3:6

拿不准某个码什么意思,直接查:

会给出「什么意思 / 常见成因 / 怎么改」三段jishi 错误 E2002
码含义
E0000未知错误
E0100词法错误
E0101缩进错误
E0102缩进混用了 Tab 和空格
E0103缩进中出现了全角空格
E0104字符串没有正常结束
E0105无法识别的字符
E0106关键字与后面的内容粘连了
E0200语法错误
E0201这里出现了意外的内容
E0202这个语句需要一个代码块
E0203这里少了冒号「:」
E0204这里需要一个名字
E0205括号没有闭合
E0300语义错误
E0301找不到这个名字
E0302找不到这个函数
E0303类型不匹配
E0304这个名字不能重复定义
E0305这个东西不能调用
E2000运行期错误
E2001不能除以零
E2002类型错误
E2003索引越界
E2004找不到这个键
E2005数值不对
E2006这个东西不能调用
E2007文件错误
E2008断言没通过
E2009异常
E2010输入结束
E2100程序被中断