ironpython是python常用的实现方式_IronPython 与C#交互
一、介绍
Python是一种面向对象、直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。 IronPython是由Jim Hugunin在微软领导开发的一个.NET平台上的Python实现,包括了完整的编译器、执行引擎与运行时支持,能够与.NET已有的库无缝整合到一起。微软对于.NET framework的IronPython和动态语言非常关注,已经在各种项目中提供了对IronPython的支持。IronPython已经很好的集成到了.NET framework中,Python语言中的字符串对应于.NET的字符串对象,并且Python语言中对应的方法,在IronPython中也都提供了。其它数据类型也是一样。
参考:
二、基础知识
1、安装
2、引入相应的dll
创建一个控制台应用程序,然后到C:\Program Files\IronPython 2.6中引用IronPython.dll,Microsoft.Scripting.Core.dll,Microsoft.Scripting.dll三个dll。
3、应用
C:\Program Files\IronPython 2.6\Tutorial\Tutorial.htm是IronPython的应用指导,写的很仔细。ipy.exe是IronPython 的运行控制台,如果你想学习IronPython 的语法可以使用这个工具。IronPython 的语法这里就不详细介绍了,如果想进一步学习,可以下载IronPython in Action。
三、IronPython 与C#交互
1、C#使用IronPython 代码
我们希望在C#中直接运行IronPython 中的代码,比方说1+2的结果值
ScriptEngine engine=Python.CreateEngine();
ScriptScope scope=engine.CreateScope();
var strExpression="1+2";
var sourceCode=engine.CreateScriptSourceFromString(strExpression);
var actual=sourceCode.Execute();
Console.WriteLine(actual);
执行结果:
3
ScriptEngine和ScriptScope是在.net中使用IronPython 脚本的两个基础类,ScriptSource是运行IronPython 的基础类,这里边sourceCode就是一个ScriptSource。
有时我们希望给IronPython 代码中传入一个变量值
ScriptEngine engine=Python.CreateEngine();
ScriptScope scope=engine.CreateScope();
var strExpression="\"Hello:\"+ str";
var sourceCode=engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("str","Python");
var actual=sourceCode.Execute(scope);
scope.RemoveVariable("str");
Console.WriteLine(actual);
执行结果:
Hello:Python
2、C#调用IronPython 函数
调用IronPython 中的MyFunction函数
var strExpression=@"def MyFunction(n):
return 2*n";
var sourceCode=engine.CreateScriptSourceFromString(strExpression).Compile().Execute(scope);
var func=engine.GetVariable>(scope,"MyFunction");
Console.WriteLine(func(3));
这里需要注意def MyFunction(n):前不能有空格,return 2*n 必须有空格
3、IronPython 调用C#函数
在IronPython 中调用C#中已经存在的函数
staticvoidMain(string[] args)
{
ScriptEngine engine=Python.CreateEngine();
ScriptScope scope=engine.CreateScope();
var strExpression="CMethod('Python')";
var sourceCode=engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("CMethod", (Func)TMethod);
var actual=sourceCode.Execute(scope);
scope.RemoveVariable("CMethod");
Console.WriteLine(actual);
}publicstaticstringTMethod(stringinfo)
{return"Hello:"+info;
}
如果需要使用某个对象中的某个函数
Test test=newTest();
var strExpression=@"test.Hello()";
var sourceCode=engine.CreateScriptSourceFromString(strExpression);
scope.SetVariable("test", test);
var actual=sourceCode.Execute(scope);
Console.WriteLine(actual);
如果需要在IronPython 实例化使用某个对象,就稍微复杂点,这里我们创建了一个IronPythonTest程序集,我们希望在IronPython代码中使用IronPythonTest程序集中的Test类,代码如下:
代码
Test代码:
namespaceIronPythonTest
{publicclassTest
{publicstringHello()
{return"Hello World";
}
}
}
clr.AddReference('IronPythonTest')是用来添加程序集的
from IronPythonTest import *是用来添加命名空间的
参考:
ironpython是python常用的实现方式_IronPython 与C#交互相关推荐
- python常用接收输入方式
python常用接收输入方式 1.接收"数组长度和数字数组" 2.接收数组长度和逐行输入数组内容 1.接收"数组长度和数字数组" 第一行:数组长度: 第二行:数 ...
- Python常用的列表方法有哪些?
Python现在随着人工智能硬件的出现已经成功的成为了IT行业比较热门的岗位了,在这个越来越多的人想要进入的行业里面,怎么样才可以在这个行业做到最好呢?总所周知,IT行业都是一个更新换代比较快的行业的 ...
- python 常用的几种定位方式
Python常用的几种定位方法 一,python 常用的8种定位方法1,使用 ID定位 driver.find_element_by _id('ID 值')driver.find_element(by ...
- python常用的OCR文字识别与图片定位方式
python常用的OCR文字识别与图片定位方式 前言 统一版本 更换pip源 1. Python调用百度文字识别ocr的实现方式 1.1 使用PyCharm安装依赖 baidu-aip chardet ...
- python 常用文件读取和保存方式汇总
python 常用文件读取和保存方式汇总 txt文件 open和close函数 文件对象的方法 读写示例理解rwa中的指针 w a r txt文件 open和close函数 fileObject = ...
- python常用变量名_python基础知识整理
Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...
- python常用扩展模块资源(大全)
本文由 大侠(AhcaoZhu)整理并转载,转载请请引用原出处. 链接: https://blog.csdn.net/Ahcao2008 python常用扩展模块资源(大全) Python 资源大全中 ...
- GitHub上7000+ Star的Python常用代码合集
作者 | 二胖并不胖 来源 | 大数据前沿(ID:bigdataqianyan) 今天二胖给大家介绍一个由一个国外小哥用好几年时间维护的Python代码合集.简单来说就是,这个程序员小哥在几年前开始保 ...
- 实战篇一 python常用模块和库介绍
# -_-@ coding: utf-8 -_-@ -- Python 常用模块和库介绍 第一部分:json模块介绍 import json 将一个Python数据结构转换为JSON: dict_ = ...
最新文章
- visual paradigm 表示选择关系_css3选择器用法介绍
- 情人节|致爱丽丝……
- 查看Oracle中存储过程长时间被卡住的原因
- 支持向量机python代码_支持向量机及python实现(一)
- NIM的完整形式是什么?
- 205615872 能用来干么?
- 并发学习之CyclicBarrier循环栅栏
- 数字抽奖小程序_两款火爆的抽奖小程序,最高抽2000元现金红包 亲测提现8.59元秒到...
- SSM实现校园二手交易平台
- Win11快捷键大全
- 卸载微信重装微信聊天记录
- Problem 2122 又见LKity
- 纯 CSS 中的简单响应式汉堡菜单
- 私企招聘:腾讯TME社会招聘
- 2017-美团大众点评-安全工程师A/B卷
- J-Link下载失败解决办法
- SRM 576 D2 L3:CharacterBoard2
- 『Python学习笔记』np.random.rand()函数和np.random.randn()函数
- jquery 动态按钮绑定点击事件
- [转] Scalers:刻意练习的本质就是持续行动+刻意学习