Вызов пользовательского модуля 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,'') == 0
        insert(py.sys.path,int32(0),'');
    end
  • Чтобы узнать, как вызвать функцию, прочитайте сигнатуру функции для search функция в mymod.py исходный файл. Функция принимает один входной параметр, words.

    def search(words):
  • Прочитайте справку по функции в mymod.py исходный файл. Согласно документации веб-сайта Python, помощь находится в «строке буквале, который происходит как первый оператор в определении модуля, функции, класса или метода». Помощь для 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 в процессе. Для получения альтернативы смотрите Reload Out-of-Process Python Interpreter.

Когда вы используете этот рабочий процесс, MATLAB удаляет все переменные, скрипты и классы в рабочей области. Для получения дополнительной информации смотрите clear classes функция.

Синтаксис вызова Python для перезагрузки модуля зависит от версии на Python. Чтобы проверить версию Python, используйте MATLAB pyenv функция.

Создайте модуль Python

Измените текущую папку на папку с возможностью записи. Откройте новый файл в РЕДАКТОРА MATLAB.

Скопируйте эти операторы, определяющие myfunc и сохраните файл как mymod.py.

def myfunc():
    """Display message."""
    return 'version 1'

Функции myfunc.

py.mymod.myfunc
ans = 

  Python str with no properties.

    version 1

Модификация модуля

Измените функцию, заменив return оператор со следующими:

    return 'version 2'

Сохраните файл.

Модуль выгрузки

clear classes

MATLAB удаляет все переменные, скрипты и классы в рабочей области.

Импорт измененного модуля

mod = py.importlib.import_module('mymod');

Перезагрузка модуля в Python версии 2.7

py.reload(mod);

Перезагрузка модуля в версии Python 3.x

py.importlib.reload(mod);

Вызов функции в обновленном модуле

Вызов обновленного myfunc функция.

py.mymod.myfunc
ans = 

  Python str with no properties.

    version 2

См. также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте