ユーザー定義の Python モジュールの呼び出し
この例では、次の Python® モジュールを使用してメソッドを呼び出す方法を説明します。このモジュールは、このドキュメンテーションの例で使用します。例において、MATLAB® でモジュールを作成する方法が説明されます。mymod.py
を Python エディターで作成する場合は、モジュールが 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
の関数シグネチャで確認します。この関数は、1 つの入力引数words
を取ります。def search(words):
mymod.py
ソース ファイル内で、関数のヘルプを読み取ります。Python の Web サイトのドキュメンテーションには、ヘルプは、"モジュールや関数、クラス、メソッド定義の先頭のステートメントとして置かれる文字列リテラル" の中に含まれるとあります。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 を実行中に、変更された 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