惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
Recent Announcements
Recent Announcements
A
About on SuperTechFans
U
Unit 42
MyScale Blog
MyScale Blog
J
Java Code Geeks
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
D
Docker
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 司徒正美
量子位
月光博客
月光博客
G
Google Developers Blog
V
V2EX
博客园 - 聂微东
宝玉的分享
宝玉的分享
IT之家
IT之家
Vercel News
Vercel News

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12)
基于AScript的python3脚本语言发布啦!
rockey627 · 2026-05-04 · via 博客园_首页

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