Main Content

사용자 정의 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

참고 항목

관련 항목