Main Content

고급 항목

PythonMATLABimport 명령 이해하기

import 문은 MATLAB®에서 Python®과 동일하게 동작하지 않습니다. Python에서는 먼저 "import pythonmodule" 문을 사용해야 pythonmodule에서 함수에 액세스할 수 있습니다. MATLAB에서는 pythonmodule에서 함수 functionname을 호출하려면 py.pythonmodule.functionname을 입력해야 합니다.

MATLAB에서는 코드의 나머지 부분에서 함수를 호출할 때마다 py.pythonmodule.을 입력할 필요가 없도록 "import py.pythonmodule.functionname" 문을 사용하십시오. 단, functionname이 기존 MATLAB 함수의 이름이 아닌 경우에만 import를 사용하십시오.

MATLAB에서 Python 모듈 불러오기

Python 코드에서는 import 문을 사용하여 코드를 불러오고 이 코드에 액세스할 수 있습니다. 모듈 이름과 함수 이름 앞에 py.를 입력하면 MATLAB은 Python을 자동으로 불러옵니다. 다음 코드는 Python 모듈 textwrap에서 함수 wrap을 호출하는 방법을 보여줍니다.

Python 코드MATLAB 코드
import textwrap
pS1 = textwrap.wrap('This is a string')
S1 = py.textwrap.wrap('This is a string');

주의

MATLAB에서 다음과 같이 입력하지 마십시오.

import pythonmodule

또는

import py.*

이와 같이 입력하면 같은 이름의 MATLAB 함수와 Python 함수가 있을 때마다 MATLAB은 Python 함수를 호출합니다. 이 경우 예기치 않은 동작이 발생할 수 있습니다.

실수로 이 import 명령을 입력한 경우에는 반드시 다음 MATLAB 명령을 호출해야 합니다.

clear import

클래스 이름이나 함수 이름 짧게 줄이기

Python의 from...import 문을 사용하면 정규화된 이름을 사용하지 않고 모듈을 참조할 수 있습니다. MATLAB에서는 import 함수를 사용하십시오. 다음 코드는 Python 모듈 textwrap에서 함수 wrap을 참조하는 방법을 보여줍니다. wrap이라는 MATLAB 함수는 없기 때문에 이름 충돌의 위험이 없으므로, import 함수를 사용하여 호출 구문을 짧게 줄일 수 있습니다. 이 명령을 호출한 후에는 네임스페이스 이름(py)과 모듈 이름(textwrap)을 입력할 필요가 없습니다.

Python 코드MATLAB 코드
import textwrap
pS1 = textwrap.wrap('This is a string')
from textwrap import wrap
pS2 = wrap('another string')
S1 = py.textwrap.wrap('This is a string');
import py.textwrap.wrap
S2 = wrap('another string');
import mymod as mm
mm = py.importlib.import_module('mymod');
% Use mm as an alias 
% to access functionality 
% in mymod

Python 함수에 대한 도움말

Python 기능에 대한 전체 설명을 보려면 외부 자료, 특히 https://www.python.org를 참조하십시오. Python 문서는 여러 다른 버전들이 있으므로 시스템의 버전에 해당하는 문서를 참조하십시오. MATLAB 문서의 예제는 대부분 Python 표준 라이브러리의 함수를 참조합니다.

타사 또는 사용자 정의 Python 모듈의 함수를 사용하려는 경우 모듈의 설치 방법과 기능에 대한 자세한 내용은 공급업체의 제품 문서를 참조하십시오.

MATLAB py.help 명령은 www.python.org/doc의 Python 도움말을 표시합니다. 모듈과 클래스에 대한 도움말은 광범위할 수 있으며 MATLAB 명령 창에 표시될 경우 유용하지 않을 수 있습니다.

  • 모듈

    py.help('textwrap')
  • 클래스

    py.help('textwrap.TextWrapper')
  • 클래스의 메서드

    py.help('textwrap.TextWrapper.wrap')
  • 함수

    py.help('textwrap.fill')

MATLAB이 Python Error:로 시작하는 오류 메시지를 표시하는 경우 자세한 내용은 Python 문서를 참조하십시오.

참고

탭 완성 기능은 사용 가능한 Python 기능을 표시해 주지 않습니다.

MATLAB에서는 대화형 방식의 Python 도움말(즉, 입력 인수 없이 py.help 호출하는 방식)을 사용할 수 없습니다.

MATLAB 이름과 충돌하는 Python 메서드 호출하기

Python 메서드 이름이 MATLAB 기본 클래스 또는 예약된 함수에 대한 봉인 메서드의 이름인 경우 MATLAB은 해당 메서드의 이름을 바꿉니다. 새 이름은 문자 x로 시작하고 원래 이름의 첫 번째 문자가 대문자로 바뀐 것입니다. 예를 들어 MATLAB은 Python 메서드의 이름 catxCat로 변경합니다. 예약된 메서드 목록은 Methods That Modify Default Behavior 항목을 참조하십시오.

메서드 이름이 MATLAB 키워드인 경우 MATLAB은 matlab.lang.makeValidName을 호출하여 메서드의 이름을 변경합니다. 키워드 목록은 iskeyword를 참조하십시오.

생성된 이름이 중복된 이름인 경우 MATLAB은 matlab.lang.makeUniqueStrings를 사용하여 메서드의 이름을 변경합니다.

Python eval 함수 호출하기

이 예제에서는 Python eval 명령을 사용하여 표현식 x+y를 계산하는 방법을 보여줍니다. eval에 대한 도움말을 읽습니다.

py.help('eval')
Help on built-in function eval in module __builtin__:

eval(...)
    eval(source[, globals[, locals]]) -> value
    
    Evaluate the source in the context of globals and locals.
    The source may be a string representing a Python expression
    or a code object as returned by compile().
    The globals must be a dictionary and locals can be any mapping,
    defaulting to the current globals and locals.
    If only globals is given, locals defaults to it.

표현식을 실행하려면 globals 네임스페이스 파라미터로서 Python dict 값을 전달하십시오.

x, y 값을 위한 Python dict 변수를 만듭니다.

workspace = py.dict(pyargs(x=1,y=6))
workspace = 
  Python dict with no properties.

    {'y': 6.0, 'x': 1.0}

표현식을 실행합니다.

res = py.eval('x+y',workspace)
res = 7

또는 변수를 할당하지 않고 두 숫자를 더하려면 globals 파라미터로서 비어 있는 dict 값을 전달하십시오.

res = py.eval('1+6',py.dict)
res = 

  Python int with properties:

    denominator: [1×1 py.int]
           imag: [1×1 py.int]
      numerator: [1×1 py.int]
           real: [1×1 py.int]

    7

호출 가능한 Python 객체 실행하기

호출 가능한 Python 객체를 실행하려면 feval 함수를 사용하십시오. 예를 들어 Python 클래스의 인스턴스 obj가 호출 가능한 경우 Python 구문 obj(x1, ..., xn)을 다음 MATLAB 명령문 중 하나로 바꾸십시오.

feval(obj,x1, ..., xn)
obj(x1, ..., xn)

MATLAB에서 Python 연산자를 표현하는 방식

MATLAB은 다음과 같은 오버로드된 연산자를 지원합니다.

Python 연산자 기호Python 메서드MATLAB 메서드
+(이항) __add__, __radd__plus, +
-(이항) __sub__, __rsub__ minus, -
*(이항) __mul__, __rmul__mtimes, *
/__truediv__, __rtruediv__mrdivide, /
==__eq__eq, ==
>__gt__gt, >
<__lt__lt, <
!=__ne__ne, ~=
>=__ge__ge, >=
<=__le__le, <=
-(단항)__neg__uminus, -a
+(단항)__pos__uplus, +a

다음 Python 연산자는 지원되지 않습니다.

Python 연산자 기호Python 메서드
%__mod__, __rmod__
**__pow__, __rpow__
<<__lshift__, __rlshift__
>>__rshift__, __rrshift__
&__and__, __rand__
^__xor__, __rxor__
|__or__, __ror__
//(이항) __floordiv__, __rfloordiv__
+=(단항) __iadd__
-=(단항) __isub__
*=(단항) __imul__
/=(단항) __itruediv__
//=(단항) __ifloordiv__
%=(단항) __imod__
**=(단항) __ipow__
<<=(단항) __ilshift__
>>=(단항) __irshift__
&=(단항) __iand__
^=(단항) __ixor__
|=(단항) __ior__
~(단항) __invert__

참고 항목

|

관련 항목

외부 웹사이트