diff --git a/README_zh.md b/README_zh.md index 18f653d9..0a602b5b 100644 --- a/README_zh.md +++ b/README_zh.md @@ -9,7 +9,8 @@

-PocketPy 是一个轻量级的Python解释器,为嵌入至游戏引擎而设计。 + +PocketPy是一个轻量级的Python解释器,为嵌入至游戏引擎而设计。 它包含一个编译器和基于字节码的虚拟机,以及交互式命令窗的实现。所有功能均集成在单个头文件`pocketpy.h`中,不包含外部依赖项,能很方便地嵌入至你的应用。 @@ -17,7 +18,27 @@ PocketPy 是一个轻量级的Python解释器,为嵌入至游戏引擎而设 ![sample_img](docs/sample.png) +## 支持的语法特性 +| 特性 | 示例 | 支持 | +| ------------ | ------------------------------- | ---- | +| 分支 | `if..else..elif` | YES | +| 循环 | `for/while/break/continue` | YES | +| 函数 | `def f(x,*args,y=1):` | YES | +| 类与继承 | `class A(B):` | YES | +| 列表 | `[1, 2, 'a']` | YES | +| 列表生成式 | `[i for i in range(5)]` | YES | +| 切片 | `a[1:2], a[:2], a[1:]` | YES | +| 元组 | `(1, 2, 'a')` | YES | +| 字典 | `{'a': 1, 'b': 2}` | YES | +| 格式化字符串 | `f'value is {x}'` | YES | +| 序列解包 | `a, b = 1, 2` | YES | +| 异常 | `raise/try..catch` | YES | +| 动态分发 | `eval()/exec()` | YES | +| 反射 | `hasattr()/getattr()/setattr()` | YES | +| 导入模块 | `import/from..import` | YES | +| 上下文管理器 | `with as :` | YES | +| 类型标注 | `def f(a: int, b : float = 1)` | YES | ## 快速上手 @@ -25,13 +46,14 @@ PocketPy 是一个轻量级的Python解释器,为嵌入至游戏引擎而设 #### C/C++ -你可以在 [Github Release](https://github.com/blueloveTH/pocketpy/releases/latest) 页面下载`pocketpy.h`,并加入到你的工程中。请参考[C-API](https://pocketpy.dev/c-api/vm/)相关的说明。 +你可以在 [Github Release](https://github.com/blueloveTH/pocketpy/releases/latest) 页面下载`pocketpy.h`,并加入到你的工程中。请参考[C-API](https://pocketpy.dev/c-api/vm/)相关的说明,对于C++,你也可以使用`VM`类的方法操作虚拟机。 ```cpp #include "pocketpy.h" int main(){ // 创建一个虚拟机 + // 参数为true表示使用std::cout作为标准输出 VM* vm = pkpy_new_vm(true); // 执行代码 pkpy_vm_exec(vm, "print('Hello world!')"); @@ -39,11 +61,9 @@ int main(){ } ``` -> 对于C++,你也可以使用VM类的方法来操作虚拟机。 - #### Unity Engine -你可以在Unity资源商店下载PocketPy的C#插件。 +你可以在Unity资源商店下载PocketPy的C#插件,支持Windows/MacOS/Android/iOS平台。 https://assetstore.unity.com/packages/slug/241120 @@ -78,7 +98,7 @@ public class Test01 : MonoBehaviour #### Flutter -执行下列命令安装pocketpy的[Flutter插件](https://pub.dev/packages/pocketpy)。 +使用下列命令安装pocketpy的[Flutter插件](https://pub.dev/packages/pocketpy),支持Windows/Android/iOS/Web平台。 ``` flutter pub add pocketpy @@ -86,30 +106,32 @@ flutter pub add pocketpy 详细配置请参考 https://pocketpy.dev/getting-started/flutter/ +#### 预编译库 +你可以在 [Github Release](https://github.com/blueloveTH/pocketpy/releases/latest) 页面下载`artifact.zip`,这个压缩包中包含了一套预编译库。结构如下。 -## 支持的语法特性 - -| 特性 | 示例 | 支持 | -| ------------ | ------------------------------- | ---- | -| 分支 | `if..else..elif` | YES | -| 循环 | `for/while/break/continue` | YES | -| 函数 | `def f(x,*args,y=1):` | YES | -| 类与继承 | `class A(B):` | YES | -| 列表 | `[1, 2, 'a']` | YES | -| 列表生成式 | `[i for i in range(5)]` | YES | -| 切片 | `a[1:2], a[:2], a[1:]` | YES | -| 元组 | `(1, 2, 'a')` | YES | -| 字典 | `{'a': 1, 'b': 2}` | YES | -| 格式化字符串 | `f'value is {x}'` | YES | -| 序列解包 | `a, b = 1, 2` | YES | -| 异常 | `raise/try..catch` | YES | -| 动态分发 | `eval()/exec()` | YES | -| 反射 | `hasattr()/getattr()/setattr()` | YES | -| 导入模块 | `import/from..import` | YES | -| 上下文管理器 | `with as :` | YES | -| 类型标注 | `def f(a: int, b : float = 1)` | YES | - +``` +- android/ + - arm64-v8a/ + - libpocketpy.so + - armeabi-v7a/ + - libpocketpy.so + - x86_64/ + - libpocketpy.so +- linux/ + - x86_64/ + - pocketpy +- macos/ + - pocketpy.bundle/ +- web/ + - lib/ + - pocketpy.js + - pocketpy.wasm +- windows/ + - x86_64/ + - pocketpy.dll + - pocketpy.exe +``` ## 参考