IronPython(.Net中调用python简述)

官网为:IronPython.net /

环境配置

1、使用visual studio2022创建一个控制台项目 2、打开Nuget管理工具,搜索IronPython

3、记得安装vs的python支持,避免编译失败情况 4、在项目中创建一个PythonScripts的文件夹,用来存放python代码

简单调用

我们可以简单编写程序如下

python 复制代码
# main.py
import sys
import uuid

def Test():
    return 'Hello IronPython!'

def SysVersion():
    return sys.version

def CreateUUID():
    return str(uuid.uuid1())

def Print():
    print('Hello World!')

这时在Program.cs中可以输入如下

C# 复制代码
using System;
using IronPython.Hosting;

var engine = Python.CreateEngine();
dynamic py = engine.ExecuteFile(@"PythonScripts/main.py");

Console.WriteLine("Test:");
var data = py.Test();
Console.WriteLine(data);
Console.WriteLine();


Console.WriteLine("Python & .NET Version:");
var version = py.SysVersion();
Console.WriteLine(version);

Console.WriteLine();

// 使用Python的UUID标准库生成基于时间戳的UUID
Console.WriteLine("Create UUID By Python:");
var uuid = py.CreateUUID();
Console.WriteLine(uuid.ToString());

Console.WriteLine();
var print = py.Print();

如何获取main中变量的值并更改

python 复制代码
# main.py
import sys
import uuid

a=10

def Test():
    return 'Hello IronPython!'

def SysVersion():
    return sys.version

def CreateUUID():
    return str(uuid.uuid1())

def Print():
    print('Hello World!')

设置a等于10

C# 复制代码
var a = py.GetVariable("a");
Console.WriteLine("a的值为"+a.ToString());

py.SetVariable("a", 20);
var v = py.GetVariable("a");
Console.WriteLine("a修改后的值为"+v.ToString());

那如何调用函数并传值呢?

python 复制代码
import sys
import uuid

a=10

def Test():
    return 'Hello IronPython!'

def SysVersion():
    return sys.version

def CreateUUID():
    return str(uuid.uuid1())

def Print():
    print('Hello World!')
    
def add_numbers(a,b):
    return a + b
C# 复制代码
using System;
using IronPython.Hosting;

var engine = Python.CreateEngine();
dynamic py = engine.ExecuteFile(@"PythonScripts/main.py");

Console.WriteLine("Test:");
var data = py.Test();
Console.WriteLine(data);
Console.WriteLine();


Console.WriteLine("Python & .NET Version:");
var version = py.SysVersion();
Console.WriteLine(version);

Console.WriteLine();

// 使用Python的UUID标准库生成基于时间戳的UUID
Console.WriteLine("Create UUID By Python:");
var uuid = py.CreateUUID();
Console.WriteLine(uuid.ToString());

Console.WriteLine();
var print = py.Print();

var a = py.GetVariable("a");
Console.WriteLine("a的值为"+a.ToString());

py.SetVariable("a", 20);
var v = py.GetVariable("a");
Console.WriteLine("a修改后的值为"+v.ToString());

var add_function = py.GetVariable("add_numbers");
int a1 = 5;
int b1 = 3;
var res = add_function(a1, b1);
Console.WriteLine(res);

结果为:

相关推荐
I'm a winner22 分钟前
第五章:Python 数据结构:列表、元组与字典(一)
开发语言·数据结构·python
番薯大佬41 分钟前
Python学习-day9 字典Dictionary
网络·python·学习
nightunderblackcat1 小时前
新手向:C语言、Java、Python 的选择与未来指南
java·c语言·python
夏日麋鹿~1 小时前
逐时nc数据批量处理为日平均
python
程序员三明治1 小时前
Python编辑器的安装及配置(Pycharm、Jupyter的安装)从0带你配置,小土堆视频
python·pycharm·编辑器
理想国的女研究僧1 小时前
Jupyter Notebook操作指南(1)
ide·python·学习·jupyter
酷飞飞2 小时前
PyQt 界面布局与交互组件使用指南
python·qt·交互·pyqt
GilgameshJSS2 小时前
【学习K230-例程19】GT6700-TCP-Client
网络·python·网络协议·学习·tcp/ip
yuanpan2 小时前
python标准库有哪些模块,简单总结下。
开发语言·python
程序员杰哥2 小时前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例