JianPy 语法规范 v1.8(公开版)
JianPy 语法规范 v1.8公开版作者李金雨邮箱81518166qq.comGitHubhttps://github.com/jianyuyan一句话定义JianPy 是 Python 的方言——用母语拼音关键词 大括号{}替代缩进语义 100% 兼容 Python。核心理念让熟悉 C 风格语法的开发者零摩擦上手 Python。使用母语语义关键词不用多层大脑转换让中国人阅读代码速度提高十倍一、快速上手5 秒看懂# 这是 JianPy 代码 gn 问候(姓名) { print(fHello, {姓名}!) } gn 入口() { shu 用户s [小明, 小红, 小刚] zhuge (名字 in 用户s) { 问候(名字) } }编译后就是标准的 Pythondefgreet(name):print(fHello,{name}!)defmain():users[小明,小红,小刚]fornameinusers:greet(name)if__name____main__:main()二、关键词映射表核心PythonJianPy说明defgn定义函数功能变量赋值shu定义数据classsjgnbao定义数据功能包returnfanhui函数返回import引入导入模块from ... import从 ... 引入从模块导入aszuo起别名passhulue空操作lambda匿名函数匿名函数yieldzanting生成器暂停async后台异步函数await等等待异步trychangshi尝试捕获异常exceptbuhuo捕获异常finallyzuizong最终执行raisepaochu抛出异常withtuoguan上下文管理器selfben当前实例super()fuji调用父类__init__chushi初始化方法__enter__jinru上下文进入__exit__tuichu上下文退出__all__引出模块导出forzhuge逐个遍历whilezhiyao条件循环matchpifen结构模式匹配caseqingkuang匹配分支nonlocal非局部非局部变量三、语法规则用户视角3.1 大括号代替缩进# ❌ Python 风格缩进敏感 def foo(x): if x 0: print(positive) # ✅ JianPy 风格大括号 gn foo(x) { if (x 0) { print(positive) } }3.2 变量声明数据定义shu 姓名 张三 # 可变数据 shu 年龄: int 18 # 带类型注解可选 chang PI 3.14159 # 常量编译时只读 # 元组解包 shu (x, y) (10, 20)3.3 函数定义gn 加法(a, b) { fanhui a b } # 默认参数 gn greet(name: str, age: int 18) { fanhui f你好{name} } # 异步函数 后台 gn 拉取数据(url) { shu 返回数据 等 fetch(url) fanhui 返回数据.json() }3.4 数据功能包定义sjgnbao Person { gn chushi(ben, name, age) { ben.name name ben.age age } gn greet(ben) { fanhui f我是{ben.name} } } # 继承 调用父类 sjgnbao Student(Person) { gn chushi(ben, name, age, school) { fuji.chushi(name, age) # 调用父类 ben.school school } }3.5 循环# 逐个遍历 zhuge (i in range(5)) { print(i) } # 元组解包遍历 shu pairs [(1, 2), (3, 4)] zhuge (a, b) in pairs { print(a b) } # 条件循环 zhiyao (count 10) { count 1 }3.6 模式匹配Python 3.10pifen 值 { qingkuang int(): print(是整数) qingkuang str(): print(是字符串) qingkuang _: print(其他类型) }3.7 异常处理changshi { shu x int(input(输入数字: )) } buhuo (ValueError) { print(输入无效) } buhuo (error) { print(f未知错误: {error}) } zuizong { print(执行完毕) }3.8 上下文管理器tuoguan open(file.txt, r) zuo f { shu content f.read() } # 无 as 子句 tuoguan torch.no_grad() { model.eval() }3.9 列表推导式shu squares [x**2 zhuge x in range(10)] shu even_squares [x**2 zhuge x in range(20) if x % 2 0] # 元组解包 shu pairs [(1, 2), (3, 4)] shu sums [a b zhuge (a, b) in pairs] # 字典/集合推导式 shu square_dict {x: x**2 zhuge x in range(5)} shu square_set {x**2 zhuge x in range(5)}3.10 入口函数gn 入口() { print(Hello, JianPy!) } # 异步入口 后台 gn 入口() { shu data 等 fetch_data() print(data) }四、保留不变的 Python 原生语法以下内容完全保持 Python 原样不需要任何改动类别示例布尔值True、False空值None类型注解int、str、list、dict、tuple、set类型别名type User dict[str, int]运算符 - * / // % ** ! 逻辑运算符and、or、not控制流if、elif、else、break、continue装饰器staticmethod、property字符串格式化fHello {name}列表/字典/集合字面量[1, 2, 3]、{a: 1}、{a, b}类型检查is、is not、in、not in五、与 Python 的主要区别项目PythonJianPy代码块界定缩进强制大括号{}函数定义defgn变量声明x 1shu x 1类定义classsjgnbao当前实例selfben父类调用super()fuji循环关键词for、whilezhuge、zhiyao导入关键词import、from引入、从入口函数无强制约定gn 入口()除此之外一切皆与 Python 相同。六、完整示例# 引入模块 从 datetime 引入 datetime 引入 json # 类定义 sjgnbao UserManager { gn chushi(ben) { ben.users [] } gn add_user(ben, name: str, age: int) { shu user { name: name, age: age, created_at: datetime.now().isoformat() } ben.users.append(user) } gn list_users(ben) { zhuge (user in ben.users) { print(f{user[name]} ({user[age]}岁)) } } } # 入口函数 gn 入口() { shu manager UserManager() manager.add_user(张三, 25) manager.add_user(李四, 30) manager.list_users() }七、工具链工具说明编译器jianpyc将.jpy文件编译为.py直接执行jianpy直接运行.jpy文件VSCode 插件语法高亮 自动补全在线 IDEhttp://jianpy.yuelonghui.cn/八、许可证JianPy 语法规范采用Jian 社区许可协议JCL✅ 个人学习、开源非商业项目免费使用✅ 商业内部使用员工 ≤ 50 人免费使用⚠️ 商业发行版语言或云平台服务须购买商业授权❌ 禁止将本规范用于闭源商业竞品开发详细协议条款请参阅 LICENSE 文件。九、获取帮助 完整教程 在线 IDE GitHub Discussions Issue 反馈Happy Coding!