Main Content

ユーザー定義の 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

参考

関連するトピック