px普贤教程PuXian
普贤教程 › 基础教程

普贤简介

普贤(PuXian,命令名 px)是一门静态编译的通用编程语言。它把 Python 的可读性和 Go 的部署形态拼在一起:源码看像 Python,产物是一个静态链接的可执行文件。

它长什么样

px
def classify(n):
    if n > 0:
        return "正数"
    elif n < 0:
        return "负数"
    return "零"

def main():
    var xs = [3, -1, 0]
    for x in xs:
        print(str(x) + " 是 " + classify(x))
text
3 是 正数
-1 是 负数
0 是 零

没有分号、没有花括号,靠缩进表达层级。def 定义函数,var 声明变量,def main() 是入口,解释器会自己调用它——不需要在文件末尾再写一行 main()(写了会执行两次)。

三个关键设计

1. 解释轨与编译轨,同一份源码

命令做了什么适合
px run app.px解释执行,秒起开发、调试、临时脚本
px run --fast app.px编译一次并缓存,之后直接 exec反复调用的脚本、cron
px build app.px编译成静态二进制发布、交付、无运行时环境的目标机

两条轨不是两个语言,语义一致;差别在性能与能力:解释器是 Mini 子集,没有并发原语,逐像素绘图这类重活会慢到不可用(实测差 50–100 倍)。

注意并发(spawn / chan)只在编译轨可用。解释器遇到并发代码会直接报错。

2. 错误是值,不是异常

语言没有 try / catch。可恢复的错误用返回值表达:

px
def div(a, b):
    if b == 0:
        return Err("除数不能为 0")
    return Ok(a / b)

def main():
    var r = div(10, 4)
    if r.is_err():
        print("失败:" + r.err())
    else:
        print("结果:" + str(r.ok()))
text
结果:2.5

不可恢复的错误(未定义变量、类型不匹配、缺键)直接终止程序,并给出行列号——这是刻意的:让"写错了"立刻暴露,而不是留下半个错误状态。

3. 自带两套依赖来源

  • 标准库 stdlib/:27 个模块随语言分发,import std.strings 直接可用。
  • 生态包 registry/:195 个包,含 MySQL、PostgreSQL、Redis、JWT、bcrypt、验证码、二维码等,用 pxpkg 装进项目。

和常见语言的对照

PuXianPythonGo
类型动态标注、运行时检查动态静态强类型
缩进语义缩进语义缩进花括号
错误Ok / Err 值异常多返回值 error
部署静态二进制需解释器静态二进制
并发spawn / chan / actor(编译轨)GIL 线程 / asynciogoroutine

它被用在哪里

PuXian 不只是一门"能跑 hello world"的语言。生产环境里它承担着真实的网络服务:

  • Ma(边缘网关)的 px_routes:请求进来交给 .px 脚本处理,脚本直接构造 HTTP 响应;
  • 账号系统的验证码、发码、限流整条链,已经从 Go 迁到 .px 并上线;
  • 云同步的 push / pull / status / delete 四个接口;
  • 边缘设备(GPIO / I2C / 串口 / PWM)通过 std.edge 直接操作。
建议先通读「基础语法 → 变量 → 函数 → 模块」,再跳到你要用的方向(Web 接口、数据库、命令行工具)。速查表在 内建函数 与 错误码 两页。