python与C#的互相调用

一、C#调用python

新建一个项目,添加引用:IronPython.dll,Microsoft.Scripting.dll(在IronPython的安装目录中)。

创建一个文本文件命名为hello.py,把该文件添加的当前的项目中,并设置为总是输出。

#hello.py
def welcome(name):
    return "hello" + name

调用hello.py文件中的方法:
static void main(string[] args)
{
    ScriptRuntime pyRunTime=Python.CreateRuntime();
    dynamic obj=pyRunTime.UseFile("hello.py");

Console.Write(obj.welcome("Nick"));
    Console.ReadKey();
}

二、Python调用C#

示例一:调用dll中的方法
1.先准备一个C#写的dll,名称为IronPython_TestDll.dll
using System;
using System.Collections.Generic;
using System.Text;
namespace IronPython_TestDll
{
    public  class TestDll
    {
        public static int Add(int x, int y)
        {
            return x + y;
        }
    }

public class TestDll1
    {
        private int aaa = 11;
        public int AAA
        {
            get { return aaa; }
            set { aaa = value; }
        }
        public void ShowAAA()
        {
            global::System.Windows.Forms.MessageBox.Show(aaa.ToString());
        }

}
}

2.调用C#的dll中的方法
import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
from System.Windows.Forms import *
from System.Drawing import *
clr.AddReferenceToFile("IronPython_TestDll.dll")
from IronPython_TestDll import *

a=12
b=6
#静态方法可以直接调用
c=TestDll.Add(a,b)
MessageBox.Show(c.ToString())

#普通方法需要先定义类
td=TestDll1()
td.AAA=100
td.ShowAAA()

示例二:动态执行python代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using IronPython.Hosting;
namespace TestIronPython
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

private void button1_Click(object sender, EventArgs e)
        {
            PythonEngine scriptEngine = new PythonEngine();

//设定dll文件所在的目录
            scriptEngine.AddToPath(Application.StartupPath);

//textBox1.Text中写的是python代码,但调用的是dll中的方法
            scriptEngine.Execute(textBox1.Text);                
        }
    }
}

//textBox1.Text中写的是如下代码,会计算弹出100的提示框。
a=12
b=6
c=TestDll.Add(a,b)
MessageBox.Show(c.ToString())

td=TestDll1()
td.AAA=100
td.ShowAAA()

python与C#的互相调用相关推荐

  1. Python实例浅谈之三Python与C/C++相互调用

    参考:http://blog.csdn.net/taiyang1987912/article/details/44779719 Python实例浅谈之三Python与C/C++相互调用 二.Pytho ...

  2. python为什么closed_为什么python类的函数被调用两次[关闭](Why a function of python class is called twice [closed])...

    为什么python类的函数被调用两次[关闭](Why a function of python class is called twice [closed]) 我遇到了两次调用的python类函数的问 ...

  3. python 方法的实例_python调用自定义函数的实例操作

    在python中,想要调用自定义函数必须先声明,然后才能调用.使用函数时,只要按照函数定义的形式,向函数传递必需的参数,就可以调用函数完成相应的功能或者获得函数返回的处理结果. (1)声明函数 pyt ...

  4. Python快速使用jira模块调用Jira接口

    Python快速使用jira模块调用Jira接口 JIRA介绍: JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作 ...

  5. python嵌套类(内部类相互调用)_核心解密Python函数在(类与函数之间)和(类与类之间)互相调用...

    image.png 一.类与函数之间 首先来看一个函数间的调用 类方法: #实现类中函数之间互相调用 #下面一个学生的简单自我介绍为例子 __metaclass__=type #自由的.动态的修改/增 ...

  6. python函数定义及调用-python函数的定义和调用 | 酷python

    python函数的定义与调用 在python中 ,函数是一个组织好的 ,可以重复使用的代码段 ,函数可以提高代码的重复利用率 ,原则上一个函数只实现一个单一的功能 ,这样能增强程序的模块性, pyth ...

  7. c调用python函数_python - Linux C调用Python 函数

    1.Python脚本,名称为py_add.py def add(a=,b=): print('Function of python called!') print('a = ',a) print('b ...

  8. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解

    Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...

  9. python名片识别_基于Python的名片识别接口调用代码实例

    基于Python的名片识别接口调用代码实例 代码描述:基于Python的名片识别接口调用代码实例 #!/usr/bin/python # -*- coding: utf-8 -*- import js ...

最新文章

  1. SCI论文写作视频1.论文的三段式结构
  2. 解决yarn报错:Found incompatible module (yarn config set ignore-engines true)
  3. POJ3130(还是判断多边形的内核是否存在)
  4. 使用关键字创建具有局部作用域的JavaScript变量
  5. eplise怎么连接数据库_Eclipse连接MySQL数据库(傻瓜篇)
  6. 通用大数据架构为什么不适合处理物联网数据?
  7. ir指令、立即数的作用_我们一起学RISC-V——08-RV32I 指令应用实战
  8. android 无限循环 简书,Android Handler 解决循环引用
  9. 搭建顶级域名下的个人博客网站
  10. mysql for windows 64_MySQL 5.6 for Windows 解压缩版配置安装(win 10 64位亲测)附安装包下载链接...
  11. 《神经网络和深度学习》系列文章七:实现我们的神经网络来分类数字(下)...
  12. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_2 连接池介绍
  13. php操作mysql工具类_PHP操作数据库的工具类
  14. linux i3 桌面,Linux 桌面平铺管理器 - i3wm
  15. mqtt+ActiveMQ用发布订阅实现点对点推送
  16. 风尚云网学习-vue项目的构建/打包/发布
  17. 思睿普信息IT技术服说明
  18. Spring + JedisCluster操作Redis(集群)
  19. word怎么将选中的单词全部改为大写
  20. java的书写规范_java书写规范以及技巧

热门文章

  1. go返回多个值和python返回多个值对比
  2. 从WebRtc学习RTP协议
  3. string.length_C.中的String.Length属性示例
  4. 八、关于防水透湿整理
  5. python去掉字符串最外侧的引号_疯狂Python讲义第二章读书笔记
  6. java怎么获取当前日期_JAVA中获取当前系统时间
  7. numpy 归一化_归一化(MinMax)和标准化(Standard)的区别
  8. 709. 转换成小写字母 golang 字符串处理
  9. wait()和waitpid()的参数解析
  10. C语言随机数生成超详解