当前位置: 首页 > news >正文

基于AScript的python3脚本语言发布啦!

AScript是一个开源的C#动态脚本解析执行引擎,支持扩展多种脚本语言,今天(2026年5月4日)正式发布了python3语言AScript.Lang.Python3的第1个版本0.0.1,快来试试吧!

一、介绍

支持python3基础语法、数据类型(int/float/bool/str/list/set/dict)、函数定义,以及列表、集合、字典操作。

二、安装

1 install-package AScript
2 install-package AScript.Lang.Python3

三、使用说明

1、注册语言

1 Script.Langs.Set("python3", Python3Lang.Instance);
2 // 可全局设置为默认语言
3 // Script.Langs.Set("python3", Python3Lang.Instance, setDefault: true);

2、上下文中指定语言

如果已全局设置默认语言则无需指定。

1 var script = new Script();
2 script.Context.Langs = new [] { "python3" };
3 var s = @"
4 def sum(a,b):
5     return a+b
6 sum(10,20)
7 ";
8 Assert.AreEqual(30L, script.Eval(s));

3、使用@lang指定语言

 1 var s = @"
 2 // 默认csharp语言
 3 int mult(int a, int b) => a*b;
 4 // 嵌入python3语言
 5 @lang python3
 6 def sum(a,b):
 7     return a+b
 8 @end
 9 int m = 10;
10 int n = 20;
11 mult(m, n) + sum(m, n);
12 ";
13 var script = new Script();
14 Assert.AreEqual(230, script.Eval(s));

4、字符串插值

1 string s = @"
2 name='tom'; 
3 f'hello {name}, 5+8={5+8}'
4 ";
5 var script = new Script();
6 script.Context.Langs = new [] { "python3" };
7 Assert.AreEqual("hello tom, 5+8=13", script.Eval(s));

5、字符串索引和截取

1 var script = new Script();
2 script.Context.Langs = new [] { "python3" };
3 Assert.AreEqual("e", script.Eval("'hello'[1]"));
4 Assert.AreEqual("e", script.Eval("'hello'[-4]"));
5 Assert.AreEqual("ell", script.Eval("'hello'[1:4]"));
6 Assert.AreEqual("ell", script.Eval("'hello'[-4:-1]"));

6、列表

 1 var s = @"
 2 list1 = [1,2,3]
 3 list2 = [3,4,5]
 4 list3=list1 + list2
 5 ";
 6 var script = new Script();
 7 script.Context.Langs = new[] { "python3" };
 8 var result = script.Eval<List<object>>(s);
 9 Assert.AreEqual("1,2,3,3,4,5", string.Join(',', result));
10 Assert.AreEqual(2L, script.Eval("list3[1]"));
11 Assert.AreEqual(2L, script.Eval("list3[-5]"));

7、集合

集合元素是去重的。

1 var script = new Script();
2 script.Context.Langs = new[] { "python3" };
3 var set = (HashSet<object>)script.Eval(@"
4 s = {1, 2, 2}
5 s.add(3)
6 s.add(2)
7 s
8 ");
9 Assert.AreEqual("1,2,3", string.Join(',', set));

8、字典

 1 var s = @"
 2 p = {'name': '张三', 'age': 18}
 3 p['age']=20
 4 p
 5 ";
 6 var script = new Script();
 7 script.Context.Langs = new [] { "python3" };
 8 var dict = script.Eval<Dictionary<object, object>>(s);
 9 Assert.AreEqual(2, dict.Count);
10 Assert.AreEqual("张三", dict["name"]);
11 Assert.AreEqual(20L, dict["age"]);

9、for遍历值

1 var code = @"
2 total = 0
3 for x in [1, 2, 3]:
4     total += x
5 total
6 ";
7 var script = new Script();
8 script.Context.Langs = new[] { "python3" };
9 Assert.AreEqual(6L, script.Eval(code));

10、for遍历值和索引

1 var code = @"
2 result = ''
3 for i, x in enumerate([1, 2, 3]):
4     result += f'{i}:{x},'
5 result
6 ";
7 var script = new Script();
8 script.Context.Langs = new[] { "python3" };
9 Assert.AreEqual("0:1,1:2,2:3,", script.Eval(code));

10、列表推导式

1 var code = @"[x * 2 for x in [1, 2, 3]]";
2 var script = new Script();
3 script.Context.Langs = new[] { "python3" };
4 var list = (List<object>)script.Eval(code);
5 Assert.AreEqual(3, list.Count);
6 Assert.AreEqual(2L, list[0]);
7 Assert.AreEqual(4L, list[1]);
8 Assert.AreEqual(6L, list[2]);

11、lambda

1 string s = @"
2 f = lambda a,b: a+b
3 f(10,20)
4 ";
5 var script = new Script();
6 script.Context.Langs = new[] { "python3" };
7 Assert.AreEqual(30L, script.Eval(s));

12、类型注解

指定变量类型及函数返回值类型。

 1 var s = @"
 2 @lang python3
 3 def sum(a:int,b:int)->int:
 4     return a+b
 5 m:int=10
 6 n:int=20
 7 sum(m,n)
 8 ";
 9 var script = new Script();
10 Assert.AreEqual(30L, script.Eval(s));

四、结束语

python3语法是参考https://www.runoob.com/python3/python3-tutorial.html教程来实现的,欢迎大家一起交流学习!


 

AScript开源地址:https://gitee.com/rockey627/AScript

http://www.jsqmd.com/news/751779/

相关文章:

  • 为 OpenClaw 智能体工作流配置 Taotoken 作为后端大脑
  • NcmppGui:5分钟解锁NCM音乐文件的完整免费方案
  • GEO代运营核心技术拆解与优质服务商选择指南 - 奔跑123
  • WinUtil终极指南:3分钟掌握Windows系统优化与批量软件安装
  • 终极指南:如何用GBFR Logs免费DPS监控工具快速提升《碧蓝幻想:Relink》战斗效率
  • 2026最权威的AI辅助写作网站解析与推荐
  • Translumo终极指南:5分钟掌握实时屏幕翻译工具,打破语言障碍
  • VR-Reversal:零门槛实现3D VR视频在普通设备上的沉浸式播放
  • 终极Unity游戏翻译解决方案:XUnity.AutoTranslator完整指南
  • ETL助睿实验入门 - 订单利润分流数据加工(保姆级步骤 + 踩坑记录)
  • 观察不同时段通过 Taotoken 调用全球模型的响应速度表现
  • Betaflight飞行控制器固件:从零开始的无人机飞控入门完整指南
  • GEO代运营技术逻辑拆解与合规服务商选择指南 - 奔跑123
  • Node js 服务中集成 Taotoken 实现稳定高效的大模型调用方案
  • 天津昊力复合钢管制造:沧州天然气涂覆钢管出售厂家 - LYL仔仔
  • 从‘能用’到‘好用’:给你的Vulhub靶场加点‘料’(自定义漏洞、网络配置与镜像加速)
  • 000 链表总结
  • 3分钟免费汉化Axure RP:告别英文界面的终极指南
  • 别再手动勾选了!用Vue3+Element Plus的el-select封装一个带全选/反选/清空的通用组件
  • 前后端鉴权方案
  • Neo 构建鸿蒙应用【三】:实战社交应用与工程感悟
  • 如何轻松解决微信QQ音频格式转换难题:Silk v3解码器实用指南
  • GPTs系统提示词项目解析:从原理到实战的提示词工程指南
  • 即插即用系列 | CVPR 2026 | WDAM:小波域注意力创新!高频引导低频增强,结构纹理双保真,复杂退化场景精准定位! | 代码分享
  • Cursor AI编程助手规则配置指南:提升代码一致性与开发效率
  • 如何在5分钟内掌握F3D:一款让你工作效率翻倍的3D模型查看神器
  • AI提示词仓库:提升开发者与AI编程助手协作效率的实战指南
  • Monolito-V2:本地化AI智能体编排运行时,实现数据私有与多智能体协作
  • Unity开发者效率翻倍:用Odin插件5分钟搞定自定义Inspector(附常用Attribute速查表)
  • ThinkPHP5.1 模板解析错误 Tag not closed 报错如何处理?