news 2026/6/26 9:47:33

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于AScript的python3脚本语言发布啦!

安装

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));

11、列表推导式

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]);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 9:46:40

普通人巧用AI学习,高效提升知识储备,方法超简单

如今AI早已不是小众的科技工具&#xff0c;而是普通人零成本、高效率提升自我的绝佳学习帮手。很多人觉得AI学习复杂、门槛高&#xff0c;其实无需专业技能、不用付费工具&#xff0c;掌握几个简单实用的方法&#xff0c;就能借助AI打破学习瓶颈&#xff0c;快速积累各类知识、…

作者头像 李华
网站建设 2026/6/26 9:42:36

【软工方法论18】行为型设计模式责任链模式全解析

【软工方法论18】288_行为型设计模式责任链模式全解析 设计模式:行为型——责任链模式全解析 你有没有遇到过这种场景? 你去公司请假: 3天以内:组长审批 3-7天:经理审批 7-30天:总监审批 30天以上:CEO审批 你作为员工,只需要把假条递上去,后面的流程自动传递,直到…

作者头像 李华