Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>JianPy Language SupportNew to Visual Studio Code? Get it now.
JianPy Language Support

JianPy Language Support

jian_lang

| (0) | Free
JianPy v1.5.4 - 语法高亮、关键字补全、一键格式化、编译运行
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

JianPy for VS Code

JianPy(简 Python)是面向中文开发者设计的 Python 方言,本插件为 VS Code 提供完整的 JianPy 语言支持。

简介

JianPy 的核心理念是:保留 Python 全部运行时语义,仅对声明层关键词进行中文化/拼音化,并用大括号 {} 替代缩进。

编译器开发者:时空系

公式:JianPy = Python 语义 + 声明层拼音关键词 + 大括号 {} + 入口()

使用 JianPy,你可以用中文思维写代码,同时无缝使用 NumPy、Pandas、PyTorch、FastAPI 等整个 Python 生态。

插件功能

  • 语法高亮:为 .jpy 文件提供完整的 JianPy 关键词、字符串、注释等高亮。
  • 实时诊断:编写时即时提示语法错误、未定义变量、常量重复赋值等问题。
  • 自动补全:基于语义分析提供关键词、变量、函数等补全建议。
  • 习惯检测:检测到 Python 风格写法(如写 for / while)时提示使用 JianPy 关键词。
  • 编译集成:可调用 jian_py 编译器将 .jpy 文件转换为标准 .py 文件。

快速开始

  1. 安装本插件。

  2. 新建一个扩展名为 .jpy 的文件,例如 hello.jpy。

  3. 写入以下代码:

    gn 入口() {
        shu name = input("请输入你的名字: ")
        print(f"你好, {name}!")
    }
    
  4. 使用 jian_py hello.jpy 编译生成 hello.py,或直接运行。

配置说明

本插件已内置 jian_py.exe 编译器,安装后通常无需额外配置即可编译运行 .jpy 文件。

功能与依赖

功能 本地 服务端
JianPy 编译运行 ✅ 优先使用插件自带的 compiler/jian_py.exe ❌ 不走服务端
语法诊断 ✅ 优先使用插件自带编译器 ✅ 本地不可用时走 /api/check-jian
Python → JianPy 转换 ❌ 不支持本地 ✅ 仅走 /api/py-to-jian

自定义本地编译器路径(可选)

如果插件自带的编译器版本不符合需求,可以手动指定:

  1. 打开 VS Code 设置:Ctrl + ,

  2. 搜索 jian jianPyPath

  3. 填入你的 jian_py.exe 路径,例如:

    D:\jianWeb\jian_py.exe
    

完整配置示例:

{
    "jian.jianPyPath": "D:\\jianWeb\\jian_py.exe",
    "jian.serverUrl": "http://jianpy.yuelonghui.cn"
}

核心语法速查

关键词对照表

Python JianPy 说明
def gn 函数定义,取自"功能"
class sjgnbao 类定义,取自"数据功能包"
=(变量赋值) shu + = 可变变量声明,取自"数据"
常量约定 chang 编译时只读常量
return fanhui 函数返回
self ben 当前实例
__init__ chushi 构造函数
super() fuji 调用父类
import 引入 模块引入
from ... import 从 ... 引入 从模块引入
as xinming 别名
__all__ 引出 模块导出
for zhuge 迭代循环,取自"逐个"
while zhiyao 条件循环,取自"只要"
match pifen 结构模式匹配
case qingkuang 模式匹配分支
try changshi 异常捕获
except buhuo 异常捕获
finally zuizong 异常最终块
raise paochu 抛出异常
with tuoguan 上下文管理器
async 后台 异步函数
await 等 等待异步结果
yield zanting 生成器暂停
lambda 匿名函数 匿名函数
pass hulue 空操作

保持不变的 Python 原生写法

以下内容完全保持英文,与 Python 一致:

  • 控制流:if、elif、else、break、continue
  • 逻辑运算符:and、or、not
  • 布尔与空值:True、False、None
  • 类型注解:int、str、float、bool、list、dict、tuple、set、type
  • 所有运算符:+ - * / // % ** @ == != < > <= >= in is
  • 数据字面量:123、"hello"、[1, 2, 3]、{"a": 1}、(1, 2)
  • f-string:f"Hello, {name}"
  • 装饰器:@decorator

大括号替代缩进

# Python 风格(缩进敏感)
def greet(name):
    if name:
        print(f"Hello, {name}")
    else:
        print("Hello, world")

# JianPy 风格(大括号)
gn greet(name) {
    if (name) {
        print(f"Hello, {name}")
    } else {
        print("Hello, world")
    }
}

变量与常量

shu count = 0
shu name = "张三"
shu age: int = 18
shu (x, y) = (10, 20)

chang MAX_SIZE = 100  # 常量,不可重新赋值

函数

gn add(a, b) {
    fanhui a + b
}

gn greet(name: str, age: int)  str {
    fanhui f"你好,{name},你今年{age}岁"
}

gn sum_all(*numbers) {
    shu total = 0
    zhuge (num in numbers) {
        total += num
    }
    fanhui total
}

类与面向对象

sjgnbao Person {
    gn chushi(ben, name, age) {
        ben.name = name
        ben.age = age
    }

    gn greet(ben) {
        fanhui f"你好,我是{ben.name},今年{ben.age}岁"
    }
}

sjgnbao Student(Person) {
    gn chushi(ben, name, age, school) {
        fuji.chushi(name, age)
        ben.school = school
    }
}

循环

# 逐个遍历
zhuge (fruit in ["苹果", "香蕉", "橙子"]) {
    print(fruit)
}

# 只要条件成立
zhiyao (count < 5) {
    print(count)
    count += 1
}

# 循环 else
zhuge (i in range(3)) {
    print(i)
} else {
    print("循环正常结束")
}

模块引入

引入 math
引入 json xinming json_parser
从 datetime 引入 datetime, timedelta
从 os.path 引入 join
从 .engine 引入 Value

# 公开接口
引出 gn public_function() {
    fanhui "这是公开函数"
}

异常处理

changshi {
    shu result = 10 / int(input("输入数字: "))
    print(f"结果: {result}")
} buhuo (ZeroDivisionError) {
    print("错误: 不能除以零")
} buhuo (ValueError) {
    print("错误: 请输入有效的数字")
} zuizong {
    print("程序执行完毕")
}

结构模式匹配

pifen 消息 {
    qingkuang {"类型": "文本", "内容": 内容}:
        print(f"收到文本: {内容}")
    qingkuang {"类型": "图片", "地址": 地址}:
        print(f"加载图片: {地址}")
    qingkuang _:
        print("未知消息")
}

推导式

shu squares = [x**2 zhuge x in range(10)]
shu evens = [x zhuge x in range(20) if x % 2 == 0]
shu square_dict = {x: x**2 zhuge x in range(5)}
shu total = sum(p.numel() zhuge p in parameters)

入口函数

每个 JianPy 程序使用 gn 入口() 作为统一入口:

gn 入口() {
    print("Hello, JianPy!")
}

编译为 Python:

def main():
    print("Hello, JianPy!")

if __name__ == "__main__":
    main()

完整示例

从 datetime 引入 datetime
引入 json

type User = dict[str, str | int | None]

sjgnbao UserManager {
    gn chushi(ben) {
        ben._users: list[User] = []
    }

    gn add_user(ben, name: str, age: int) {
        shu user: User = {
            "name": name,
            "age": age,
            "created_at": datetime.now().isoformat()
        }
        ben._users.append(user)
        print(f"用户 {name} 已添加")
    }

    gn to_json(ben)  str {
        fanhui json.dumps(ben._users, ensure_ascii=False, indent=2)
    }
}

gn 入口() {
    shu manager = UserManager()
    manager.add_user("张三", 25)
    manager.add_user("李四", 30)
    print(manager.to_json())
}

了解更多

  • JianPy 语法规范:jian_py/jpy语法规范.md
  • JianPy 编译器设计说明:JianPy编译器设计说明书.md
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft