고급 항목
Python과 MATLAB의 import
명령 이해하기
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 코드 |
---|---|
| 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 코드 |
---|---|
| S1 = py.textwrap.wrap('This is a string'); import py.textwrap.wrap S2 = wrap('another string'); |
| 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 메서드의 이름 cat
를 xCat
로 변경합니다. 예약된 메서드 목록은 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__ |