调用用户定义的 Python 模块
此示例说明如何从以下 Python® 模块调用方法。本文档中的示例会使用此模块。此示例说明如何在 MATLAB® 中创建该模块。如果您在 Python 编辑器中创建 mymod.py,请确保该模块位于 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函数的函数签名。该函数接受一个输入参量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 模块。有关替代方法,请参阅重新加载进程外 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 classesMATLAB 删除工作区中的所有变量、脚本和类。最佳做法是从命令提示符下调用 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