1. IronPython 설치
Visual Studio 2019 -
도구
-Nuget 패키지 관리자
-패키지 관리자 콘솔
PM> Install-Package IronPython -Version 2.7.9
2. Python 코드
3. C# 코드
디렉터리 구분자는 역슬래시(\
)가 아니다.
4. C# 코드 실행
알아낸 점
IronPython 실행과정
엔진 생성
var engine = IronPython.Hosting.Python.CreateEngine();
스코프 생성
var scope = engine.CreateScope();
파일 읽기
var source = engine.CreateScriptSourceFromFile("~~~~~~~");
스코프를 넣어 파일 실행
source.Execute(scope);
파이썬 함수는 어떻게 실행 시킬 수 있을까?
파이썬 코드
C# 코드와 실행 결과
알아낸 점
처음 Hello World를 출력했을 때와 C# 코드에서 차이가 나는 부분은 다음과 같다.
var getPythonFunc = scope.GetVariable<Func<string>>("getHello");
Console.WriteLine("def 실행 테스트 : " + getPythonFunc());
var sum = scope.GetVariable<Func<int, int, int>>("sum");
Console.WriteLine("def 실행 테스트 : " + sum(2,3));
우선, 함수를 실행시킬 때는 engine이 아니라 scope에서 GetVariable 함수를 실행한다.
이름 그대로 scope는 파이썬 코드를 부분적으로 볼 수 있게 해주는 기능을 하는 것 같다.
GetVariable에서 Func<> 는 Visual Studio에서 설명을 잘 해준다.
간단히 정리하면 Func<> 안에 자료형을 여러개 넣을 수 있다. 넣은 자료형이 하나일 경우에는 불러들일 함수가 매개변수를 필요로 하지않고 string을 반환하기만 하는 함수라는 뜻이다. 한편, 자료형을 여러개 넣었을 경우에는 오른쪽 끝에 자료형은 반환값의 자료형 을 나타내고, 그 외 자료형들은 불러들일 함수가 필요로 하는 매개변수들의 자료형이다.
마지막으로, GetVariable의 인자값은 불러들일 파이썬 함수의 이름을 넣으면 된다.
정리를 해보면 다음과 같다.
var [파이썬 함수를 저장 할 C#변수] = scope.GetVariable<Func<[파이썬 함수의 매개변수 자료형, 파이썬 함수의 반환형]>>([파이썬 함수명]);
파이썬 클래스는 어떻게 실행할까?
파이썬 코드
C# 코드와 출력 결과
알아낸 점
함수를 불러냈을 때와 살짝 다른점을 볼 수 있다.
scope.GetVarialbe("Hello")(1,2) 는 파이썬 코드에서 Hello 클래스의 생성자를 실행시킨다. 따라서, 생성자에 매개변수가 필요하다면 GetVariable을 할 때 생성자의 매개변수에 맞게 값을 넣어준다. getPythonClass가 파이썬의 클래스로 초기화가 되면 보통 클래스의 메소드를 쓰는 방법과 똑같이 사용할 수 있다.
'NotePad' 카테고리의 다른 글
iOS 앱 배포 하려다 키체인 암호 팝업에서 막혔을 때 (1) | 2022.06.15 |
---|---|
[PlantUML] 1. PlantUML 설치와 실행 그리고 기본적인 요소 (0) | 2022.05.04 |
AMD 에서 Android HAXM 오류 문제 해결 (0) | 2020.02.10 |
[알고리즘] N-Queen (0) | 2020.01.26 |
[알고리즘] 정렬(Sort) (0) | 2020.01.14 |