添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

pyrun

MATLAB 中运行 Python 语句

自 R2021b 起

说明

示例

pyrun( code ) 在 Python ® 解释器中执行 code 中的 Python 语句。

使用 pyrun 函数创建的变量是持久变量。您可以在对 pyrun 的后续调用中使用这些变量。

示例

outvars = pyrun( code , outputs ) 通过在 outputs 中指定 Python 变量的名称并在 outvars 中捕获返回值,将由 Python 生成的任何变量返回给 MATLAB ®

示例

outvars = pyrun( code , outputs , pyName=pyValue ) 使用由一个或多个名称-值参数传递的 MATLAB 数据来执行其中包含已赋值的输入和输出变量名称的代码。

示例

全部折叠

此示例在 Python 解释器中执行这些 Python 语句。

greeting = "hello"
print(greeting)

从 MATLAB 中调用 Python 代码。

pyrun(["greeting = 'hello'", "print(greeting)"])
hello

变量 greeting 仅存在于 Python 命名空间中。MATLAB 在 MATLAB 命令行中显示 print 语句的结果。

以下 Python 代码将创建一周中各天的列表。

days = ['Monday','Tuesday','Wednesday','Thursday','Friday']

为列表函数创建一个 Python 变量 days 。在 MATLAB 中,将变量命名为 mllist

mllist = pyrun("days = ['Monday','Tuesday','Wednesday','Thursday','Friday']","days")
mllist = 
  Python list with no properties.
    ['Tuesday', 'Monday', 'Wednesday', 'Thursday', 'Friday']

此示例使用指定的输入值在 Python 解释器中执行语句 a = b*c

pyrun("a = b*c", b = 5, c = 10)

变量 a b c 仅存在于 Python 命名空间中。但是,这些变量可用于对 pyrun 的进一步调用。

md = pyrun("d = a+c", "d")
md = 60

此示例在 Python 中执行 b*c ,并在 MATLAB 变量中返回结果。

res = pyrun("a = b*c", "a", b=5, c=10)
res = 50

此示例将一个局部变量赋给一个 Python 变量,使其可在 MATLAB 中访问。

创建一个模块 localModule.py

def myFunc():
    print('myFunc executed')
mvar = 3

创建变量 m 以访问 mvar ,并将值赋给 MATLAB 变量 out

pyrun("import localModule")
out = pyrun("m = localModule.mvar","m")

输入参数

全部折叠

一个或多个 Python 语句,指定为字符串标量、字符串数组、字符向量、字符数组、字符向量元胞数组,或是使用 Python 内置 compile 函数从脚本生成的 Python 代码对象。每个条目表示一行 Python 代码。

要调用单行语句,请将 code 作为字符串标量或字符向量进行传递。要调用多行 Python 语句,请将 code 作为字符串数组、字符数组或字符向量元胞数组进行传递。MATLAB 会在多行语句的元素之间插入换行符。

示例: pyrun(["a = 3","print(a)"])

要传递给 Python code 的一个或多个输入参数名称和值,指定为关键字和值参数。 pyName 是变量的 Python 名称, pyValue 是所赋的值。您可采用任意顺序指定多个名称-值对组参数,如 pyName1=pyValue1,...,pyNameN=pyValueN 所示。

示例: pyrun("b*c",b=5,c=10) 对 Python 语句 b*c 的变量 b c 进行初始化。

一个或多个 Python 变量名称,指定为字符串数组。变量可以是局部变量,也可以是全局变量。MATLAB 将 code 的输出赋给由 outputs 指定的每个变量,并在 outvars 中返回值。

示例: mb = pyrun("b=a+2","b",a=5)

输出参数

全部折叠

一个或多个 MATLAB 工作区变量名称,从 code 中以有效 Python 类型形式返回。在 outputs 参数中指定 Python 变量的名称。如果您要访问 Python 数据,则必须使用 outvars 将 Python 对象显式返回给 MATLAB。

要指定多个输出,请使用方括号。例如, [res1,res2] = pyrun("a=b*c",["a","b"],b=5,c=10) 返回两个 outvars ,即 res1 res2

局限性

  • 对于使用 pyrun pyrunfile 定义的 Python 类,如果将类的实例返回到 MATLAB,将无法修改这些类。如果需要更改类定义,请重新启动解释器会话:

    terminate(pyenv)
    pyenv(ExecutionMode="OutOfProcess")

    或者,重新启动 MATLAB 以使用 "InProcess" 模式。

    有些局部变量要由其他局部变量通过某种方法来初始化, pyrun pyrunfile 函数不支持具有这种局部变量的类。对于这种用法,请创建一个模块并使用 py. 前缀访问它。

版本历史记录

在 R2021b 中推出

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

MathWorks

Accelerating the pace of engineering and science