调用Python脚本基本应用方式分别是什么
调用Python脚本基本应用方式分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
在编程人员需要选择一种合适的计算机语言进行程序开发时,他们脑海中往往会出现Python这一语言。它灵活易用的特点大大的提高了开发人员的效率。在这里我们将会为大家详细介绍一下调用Python脚本的相关方法。
之前简单了解过Python语言,但没有深入和系统的学习过,只是一直觉得它足够的灵活,而且不需要编译(因为Python是解释型语言),所以就一直想把它应用到CodeMaker中,达到一种灵活的、自定义的配置。
首先去下载IronPython类库(这里使用 IronPython-v2.6),我们借助IronPython类库,在.Net下运行调用Python脚本。
将IronPython以及相关的类库添加到项目引用里。
IronPython.dll IronPython.Modules.dll Microsoft.Dynamic.dll Microsoft.Scripting.Core.dll Microsoft.Scripting.Debugging.dll Microsoft.Scripting.dll Microsoft.Scripting.ExtensionAttribute.dll
只做了个小例子,不是很复杂,所以就直接贴调用Python脚本的代码了。
// 主方法 static void Main(string[] args) { // 创建脚本引擎 ScriptEngine engine = Python.CreateEngine(); // 创建一个脚本范围容器 ScriptScope scope = engine.CreateScope(); // 设置变量 engine.SetVariable(scope, "UserName", "cnBlogs"); // 执行Python脚本,并获取返回值 ScriptScope resultScope = engine.ExecuteFile("test.py", scope); // 输出结果 Console.WriteLine(resultScope.GetVariable("Result")); } // Python脚本: def GetType(name): return "hello " + name; Result = GetType(UserName);
调用Python脚本内容是很简单的,声明一个函数,参数为name,函数返回拼接name后的字符串,函数结束。然后调用该函数,参数为UserName,返回值为Result。
脚本中,UserName与主方法中的
engine.SetVariable(scope, "UserName", "cnBlogs");相对应。
Result与主方法中的
resultScope.GetVariable("Result")相对应,而无需再在脚本中声明这两个变量。
执行结果:
可以看到,输出的字符串是从Python脚本中返回的,就可以达到通过修改脚本实现执行结果的变化。
调用Python脚本在CodeMaker中的应用
使用方式:
我们以前也提到过已经提过该代码生成工具是采用标签的方式自定义模板,然后根据模板生成代码文件。所以为相应的Python脚本添加了一个script标签。
< c:script path="test.py" variables="{userName:cnBlogs;password:123456}"
result="Result" />
path:脚本文件路径(相对于EXE文件的路径)
variables:变量容器,原本打算使用类似于JSON格式的,但因为一些特殊符号会影响标签的解析,所以稍微改了一下分隔符,多个变量和值之间用;(分号)隔开。
result:脚本执行结果的返回变量,用于在代码中获取脚本返回值。
用途:在生成实体类的时候,对于类型转换,大部分可以直接使用Convert.ToXXX()这种形式,但对于Guid,却只能用new Guid()这种形式。
借助脚本,就可以在脚本中判断类型,如果是Guid的话,则返回new Guid();若是其他类型,则返回ConvertToXXX();
关于调用Python脚本基本应用方式分别是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341