사용자 정의 Python 모듈 호출하기
이 예제에서는 다음 Python® 모듈에서 메서드를 호출하는 방법을 보여줍니다. 이 모듈은 이 문서의 예제에서 사용됩니다. 이 예제에서는 MATLAB®에서 모듈을 만드는 방법을 설명합니다. Python 편집기에서 mymod.py
를 만드는 경우, 모듈이 Python 검색 경로에 있는지 확인하십시오. 이 예제에서는 또한 숙련된 Python 사용자가 아닌 경우 함수 호출을 위한 도움말을 표시하는 방법도 설명합니다.
현재 폴더를 쓰기 가능한 폴더로 변경합니다.
MATLAB 편집기에서 새 파일을 엽니다.
다음 명령을 복사한 후 파일을
mymod.py
로 저장합니다.# mymod.py """Python module demonstrates passing MATLAB types to Python functions""" def search(words): """Return list of words containing 'son'""" newlist = [w for w in words if 'son' in w] return newlist def theend(words): """Append 'The End' to list of words""" words.append('The End') return words
MATLAB 명령 프롬프트에서 현재 폴더를 Python 검색 경로에 추가합니다.
if count(py.sys.path,pwd) == 0 insert(py.sys.path,int32(0),pwd); end
함수 호출 방법을 알아보려면
mymod.py
소스 파일에서search
함수의 함수 시그니처를 읽어 보십시오. 이 함수는 하나의 입력 인수words
를 받습니다.def search(words):
mymod.py
소스 파일 내에 있는 함수 도움말을 읽습니다. Python 웹사이트 문서에 따르면, 도움말은 "모듈, 함수, 클래스 또는 메서드 정의에서 첫 번째로 나오는 문자열 리터럴"로 되어 있습니다.search
에 대한 도움말은 다음과 같습니다."""Return list of words containing 'son'"""
이 함수는 목록을 반환합니다.
MATLAB에서 입력 인수, 즉 이름 목록을 생성합니다.
N = py.list({'Jones','Johnson','James'})
N = Python list with no properties. ['Jones', 'Johnson', 'James']
search
함수를 호출합니다. 모듈 이름과 함수 이름 앞에py.
를 입력하십시오.names = py.mymod.search(N)
names = Python list with no properties. ['Johnson']
이 함수는
py.list
값을 반환합니다.원래 입력값인
N
은 바뀌지 않습니다.N
N = Python list with no properties. ['Jones', 'Johnson', 'James']
수정된 사용자 정의 Python 모듈 다시 불러오기
이 예제에서는 Python 인터프리터가 현재 프로세스 내(in-process)에서 실행 중일 때 수정된 Python 모듈을 다시 불러오는 방법을 보여줍니다. 또 다른 방법은별도 프로세스로 Python 인터프리터 다시 불러오기 항목을 참조하십시오.
Python 모듈 생성하기
현재 폴더를 쓰기 가능한 폴더로 변경합니다. MATLAB 편집기에서 새 파일을 엽니다.
myfunc
함수를 정의하는 다음 명령문을 복사한 후 파일을 newmod.py
로 저장합니다.
# newmod.py
def myfunc():
"""Display message."""
return 'version 1'
myfunc
를 호출합니다.
py.newmod.myfunc
ans = Python str with no properties. version 1
모듈 수정하기
return
문을 다음과 같이 바꿔서 함수를 수정합니다.
return 'version 2'
파일을 저장합니다.
모듈 언로드하기
clear classes
MATLAB은 작업 공간에 있는 변수, 스크립트 및 클래스를 모두 삭제합니다. 가장 권장하는 방법은 명령 프롬프트에서 clear
를 호출하는 것입니다. 작업 공간(예: 함수 작업 공간)에서 clear classes
를 실행하는 경우 clear
가 일부 변수를 지우지 못할 수 있습니다. 기본 작업 공간에서 명령을 실행해 보십시오.
수정된 모듈 가져오기
mod = py.importlib.import_module('newmod');
Python에서 모듈 다시 불러오기
py.importlib.reload(mod);
업데이트된 모듈에서 함수 호출하기
업데이트된 myfunc
함수를 호출합니다.
py.newmod.myfunc
ans = Python str with no properties. version 2