Main Content

pyrun

MATLAB에서 Python 명령문 실행하기

R2021b 이후

    설명

    예제

    pyrun(code)는 Python® 인터프리터에서 code의 Python 명령문을 실행합니다.

    pyrun 함수를 사용하여 만든 변수는 영구적입니다. pyrun에 대한 후속 호출에서 이러한 변수를 사용할 수 있습니다.

    예제

    outvars = pyrun(code,outputs)outputs에서 Python 변수의 이름을 지정하고 outvars에서 반환된 값을 캡처하여 Python에서 생성한 모든 변수를 MATLAB®으로 반환합니다.

    예제

    outvars = pyrun(code,outputs,pyName=pyValue)는 하나 이상의 이름-값 인수로 전달된 MATLAB 데이터를 사용하여 할당된 입력 변수 이름과 출력 변수 이름으로 코드를 실행합니다.

    예제

    모두 축소

    이 예제에서는 Python 인터프리터에서 다음 Python 명령문을 실행합니다.

    greeting = "hello"
    print(greeting)

    MATLAB에서 Python 코드를 호출합니다.

    pyrun(["greeting = 'hello'", "print(greeting)"])
    hello

    변수 greeting은 Python 네임스페이스에만 존재합니다. MATLAB은 MATLAB 명령줄에 print 문의 결과를 표시합니다.

    이 Python 코드는 요일 목록을 만듭니다.

    days = ['Monday','Tuesday','Wednesday','Thursday','Friday']

    목록 함수에 대한 Python 변수 days를 생성합니다. MATLAB에서 변수 mllist의 이름을 지정합니다.

    mllist = pyrun("days = ['Monday','Tuesday','Wednesday','Thursday','Friday']","days")
    mllist = 
      Python list with no properties.
    
        ['Tuesday', 'Monday', 'Wednesday', 'Thursday', 'Friday']
    

    이 예제에서는 지정된 입력값을 사용하여 Python 인터프리터에서 명령문 a = b*c를 실행합니다.

    pyrun("a = b*c", b = 5, c = 10)

    변수 a, b, c는 Python 네임스페이스에만 존재합니다. 하지만 pyrun에 대한 추가 호출에 이러한 변수를 사용할 수 있습니다.

    md = pyrun("d = a+c", "d")
    md = 60

    이 예제에서는 Python에서 b*c를 실행하고 결과를 MATLAB 변수로 반환합니다.

    res = pyrun("a = b*c", "a", b=5, c=10)
    res = 50

    이 예제에서는 Python 변수에 지역 변수를 할당하여 MATLAB에서 액세스할 수 있게 만듭니다.

    모듈 localModule.py를 만듭니다.

    def myFunc():
        print('myFunc executed')
    mvar = 3

    mvar에 액세스할 변수 m을 만들고 이 값을 MATLAB 변수 out에 할당합니다.

    pyrun("import localModule")
    out = pyrun("m = localModule.mvar","m")

    입력 인수

    모두 축소

    하나 이상의 Python 명령문으로, string형 스칼라, string형 배열, 문자형 벡터, 문자형 배열, 문자형 벡터로 구성된 셀형 배열 또는 Python 내장 compile 함수를 사용하여 생성된 스크립트의 Python 코드 객체로 지정됩니다. 각 항목은 Python 코드 라인을 나타냅니다.

    한 줄로 된 명령문을 호출하려면 code를 string형 스칼라 또는 문자형 벡터로 전달하십시오. 여러 줄로 된 Python 명령문을 호출하려면 code를 string형 배열, 문자형 배열 또는 문자형 벡터로 구성된 셀형 배열로 전달하십시오. MATLAB은 여러 줄로 된 명령문의 요소 사이에 새 줄 문자를 삽입합니다.

    예: pyrun(["a = 3","print(a)"])

    Python code에 전달할 하나 이상의 입력 인수 이름과 값으로, 키워드와 값 인수로 지정됩니다. pyName은 변수의 Python 이름이며, pyValue는 대입된 값입니다. pyName1=pyValue1,...,pyNameN=pyValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

    예: pyrun("b*c",b=5,c=10)은 Python 명령문 b*c에 대한 변수 bc를 초기화합니다.

    하나 이상의 Python 변수 이름으로, string형 배열로 지정됩니다. 변수는 지역 변수일 수도 있고 전역 변수일 수도 있습니다. MATLAB은 code의 출력값을 outputs로 명명된 각 변수에 대입하며 값을 outvars에 반환합니다.

    예: mb = pyrun("b=a+2","b",a=5)

    출력 인수

    모두 축소

    하나 이상의 MATLAB 작업 공간 변수 이름으로, code로부터 유효한 Python 유형으로 반환됩니다. outputs 인수에 Python 변수의 이름을 지정합니다. Python 데이터에 액세스하려면 outvars를 사용하여 Python 객체를 MATLAB에 명시적으로 반환해야 합니다.

    여러 출력값을 지정하려면 대괄호를 사용하십시오. 예를 들어 [res1,res2] = pyrun("a=b*c",["a","b"],b=5,c=10)은 두 개의 outvarsres1res2를 반환합니다.

    제한 사항

    • pyrun 또는 pyrunfile을 사용하여 정의된 Python 클래스의 인스턴스를 MATLAB으로 반환하면 정의된 클래스를 수정할 수 없습니다. 클래스 정의를 변경해야 하는 경우 다음과 같이 인터프리터 세션을 재시작하십시오.

      terminate(pyenv)
      pyenv(ExecutionMode="OutOfProcess")

      또는 "InProcess" 모드로 MATLAB을 재시작하십시오.

      pyrun 함수와 pyrunfile 함수는 메서드를 통해 다른 지역 변수에 의해 초기화되는 지역 변수를 사용하는 클래스를 지원하지 않습니다. 이렇게 사용하려면 py. 접두사를 사용하여 모듈을 만들어 액세스하십시오.

    버전 내역

    R2021b에 개발됨