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