В этом примере показано, как вызывать методы из следующего модуля 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.
При использовании этого рабочего процесса 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