ExternalEvaluate

外部运算器列表 »

ExternalEvaluate["sys","cmd"]

在外部运算器 sys 中计算命令 cmd,返回与输出对应的表达式.

ExternalEvaluate[{"sys",opts},"cmd"]

对外部运算器使用选项 opts.

ExternalEvaluate[assoc,"cmd"]

使用由 assoc 指定的外部运算器来计算 cmd.

ExternalEvaluate[session,"cmd"]

在正在运行的指定 ExternalSessionObject 中计算 cmd.

ExternalEvaluate[sys"type",]

返回转换为指定类型的输出

ExternalEvaluate[spec,obj]

计算指定 ExternalObjectExternalOperationFileURLCloudObject 的内容.

ExternalEvaluate[spec,assoc]

计算由 assoc 指定的命令.

ExternalEvaluate[spec,{cmd1,cmd2,}]

计算命令 cmdi 列表.

ExternalEvaluate[DatabaseReference[ref],"cmd"]

使用 ref 指定的数据库运算 cmd.

ExternalEvaluate[spec]

表示 ExternalEvaluate 的运算符形式,可应用到一个命令或对象上.

更多信息

  • ExternalEvaluate[sys,"cmd"] 返回表示使用外部运算器系统计算 cmd 所得结果的字符串或 Failure 对象.
  • ExternalEvaluate[sys,obj] 中,将把外部对象 obj 的内容当作命令来使用. 外部对象可以是 ExternalObject[]ExternalOperation[]File[]URL[]CloudObject[]LocalObject[].
  • ExternalEvaluate[sys,] 中,sys 的可能选择包括:
  • "Python"Python
    "NodeJS"通过 Node.js 运行的 JavaScript
    "Julia"Julia
    "Ruby"Ruby
    "R"R
    "Java"Java
    "Octave"Octave
    "Shell"Bash, Sh, Zsh, ...
    "Jupyter"Jupyter 内核
    "SQL"SQL 数据库
    "SQL-JDBC"使用 JDBC 的 SQL 数据库
    ExternalSessionObject[]StartExternalSession 开启的会话对象
  • ExternalEvaluate[assoc,cmd] 中,assoc 的元素可以包括:
  • "System"要启动的外表系统或语言
    "Evaluator"运行代码的指定运算器
    "Name"运算器的注册名称
    "ReturnType"返回对象的类型 ("String""Expression", ...)
    "Prolog"计算命令前运行的代码
    "Epilog"计算命令后运行的代码
    "SessionProlog"会话开始前要运行的代码
    "SessionEpilog"会话结束后要运行的代码
  • ExternalEvaluate[assoc,cmd] 中,关联的元素 cmd 可以包括:
  • "Command"要执行的命令字符串
    "ReturnType"返回对象的类型 ("String", "Expression", ...)
    "Arguments"用来调用命令的参数
    "Constants"执行命令前要设置的变量
    "TemplateArguments""Command" 为模板时的模板参数
  • ExternalEvaluate[spec,obj]obj"Command" 的可能设置包括:
  • "code"要执行的字符串
    ExternalOperation[]要执行的外部操作
    ExternalObject[]要检索的外部对象
    ExternalFunction[]要检索的外部函数
    File[]要执行的文件内容
    URL[]执行 URL 给出的内容
    CloudObject[]云对象指定的命令
    LocalObject[]本地对象指定的命令
  • ExternalEvaluate[sys->"type",] 中的 "type""ReturnType" 的可能设置包括:
  • "Expression"试图转换成 Wolfram 语言表达式
    "String"给出外部运算器的原始字符串输出
    "ExternalObject"ExternalObject 的形式返回结果
  • ExternalEvaluate[{sys,"Evaluator"evaluator},]evaluator 的可能设置取决于 sys,且包括:
  • "path"到可执行语言的路径
    DatabaseReference[]一个 SQL 数据库连接
    SQLConnection[]一个 SQL-JDBC 数据库连接
  • 默认 "ReturnType" 每个系统都不尽相同;通常是 "Expression".
  • ExternalEvaluate[{"sys",opts},] 形式中,可能的选项与 ExternalEvaluate[assoc,] 中的关联的元素一样.
  • 指令 "cmd" 可能包含内联模板表达式. <*expr*>. 这会在发送 "cmd" 给外部计算器之前计算 expr.
  • ExternalEvaluate[sys,cmd] 启动外部运算器,计算 cmd,然后退出外部会话.
  • ExternalEvaluate[session,cmd] 将命令发送到正在运行的会话,并且不会退出会话.
  • 当把 sys 指定为字符串时,首先把用户通过 RegisterExternalEvaluator 指定的选项作为会话选项进行搜索,然后是系统中包含的内置会话选项或自动发现.
  • FindExternalEvaluators 给出可以使用的运算器系统数据集.
  • 对于大多数外部运算器,对标准输出的单独写入操作会立即显示到笔记本或终端上.

范例

打开所有单元关闭所有单元

基本范例  (10)

在 Python 中计算一个简单的算术表达式:

使用 Node.js 在 JavaScript 中计算简单数学函数:

在 Python 中导入一个程序库,并使用一个函数:

在 Python 会话中运行多行代码:

使用 File 包装器来执行文件中的代码:

使用 CloudDeploy 部署代码,然后直接从 CloudObject 中运行代码:

使用 URL 包装器来直接运行在线托管的代码:

将 Julia 字典作为 Association 返回:

用一个 Wolfram 语言表达式作为参数,根据名称运算函数:

在数据库中执行一个查询并返回结果:

在行的开头用 > 开启一个利用 ExternalEvaluate 进行计算的外部代码单元:

2+2

在 Python 提供的环境中运行代码:

范围  (36)

基本范例  (4)

在 Python 中使用一系列数字计算 10 的幂:

将结果作为 Python dict 返回,给出一个 Association

许多类型,如 datetime,可自然映射到 Wolfram 语言表达式:

在 Python 中使用内联 TemplateExpression 将两个数字相加:

使用 ExternalOperation 组成复杂的操作:

会话选项  (13)

"ReturnType"  (4)

对于大多数系统来说,默认的返回类型是 "Expression"

对于 "Expression" 返回类型,数字、字符串、列表和关联被自动导入:

对于返回类型 "String",返回的结果是以外部语言给出的字符串:

使用数据库时,默认的返回类型是 "Dataset"

可通过 "ReturnType" 以不同形式返回数据:

"Evaluator"  (3)

可以使用 "Evaluator" 确保只使用运算器的一个特定版本:

在使用带有 "SQL" 运算器的文件时,运算器可以是 SQLite File 的路径或 DatabaseReference 规范:

Association 可用于运算 Python 配置环境中的代码:

"Name"  (1)

使用名称注册运算器:

使用已登记的运算器时,请指明其名称:

"SessionProlog"  (2)

"SessionProlog" 在会话开始时执行 side effect:

启动一个外部会话,在会话开始时导入一个库:

运算来自导入库的函数:

删除会话对象:

"SessionEpilog"  (1)

使用 "SessionEpilog" 在会话结束时运行一个副作用:

"Prolog"  (1)

"Prolog" 在每次计算之前执行 side effect:

"Epilog"  (1)

"Epilog" 在每次计算之后执行 side effect:

命令选项  (19)

"Command"  (7)

当提供一个字符串时,该命令将直接被执行:

上面的内容相当于用这种格式写命令:

使用 File 包装器运行文件中的代码:

上面的内容相当于用这种格式写命令:

使用 URL 包装器来直接运行在线的代码:

上面的内容相当于用这种格式写命令:

将代码放入 CloudObject

直接在云端运行:

上面的内容相当于用这种格式写命令:

ExternalOperation 可用于 "Command"

如果需要,可以使用参数来调用操作:

ExternalFunction 可用于 "Command"

启动 Python 会话:

创建 ExternalObject

使用 "Command""Arguments" 调用对象:

如果只使用 "Command",对象将被转换为默认的 "ReturnType"

删除对象:

"ReturnType"  (1)

在命令中指定一个 "ReturnType" 将覆盖会话的 "ReturnType"

"Arguments"  (4)

使用 "Arguments" 来调用带有参数的命令:

对于单一参数,不需要使用列表:

如果需要传递列表作为第一个参数,则需要明确使用一个额外列表进行包装:

可以在 "Command" 中定义一个函数,然后用 "Arguments" 直接进行调用:

通过使用 Rule 可以得到同样的结果:

另一种方法是定义 ExternalFunction

ExternalOperation 可用于 "Arguments"

启动 Python 会话:

创建 ExternalObject

在函数调用中使用对象:

删除对象:

"Constants"  (3)

使用 "Constants" 在命令运行前永久设置全局变量:

ExternalOperation 可用于 "Constants"

ExternalFunction 可用于 "Constants"

"TemplateArguments"  (4)

运行命令时,可以内联一个 TemplateExpression

可以使用 "TemplateArguments" 明确填写 TemplateSlot

如果需要传递列表作为第一个参数,则需要明确使用额外列表进行包装:

可以为模板槽命名,并使用 Association 来向模板传递命名的参数:

ExternalOperation 可用于 "TemplateArguments"

ExternalFunction 可用于 "TemplateArguments"

应用  (1)

运算数据库中的查询并返回结果:

属性和关系  (4)

计算失败时,返回 Failure 对象:

可在失败对象中访问丢弃的异常类型:

外部语言单元隐式调用 StartExternalSession

x=2

一个新的会话已被开启:

默认情况下,给定系统的所有单元都使用该会话:

x * 2

结束会话,以便后续计算在新会话中开始:

运行一系列命令时使用相同的会话:

一组独立的 ExternalEvaluate 调用中分别使用单独的会话:

"String""Expression" 返回类型可用导入和导出进行关联:

使用带有 "PythonExpression"ImportString 将 Python 字符串转换为表达式:

反之,使用 ExportString 将表达式转换为 Python 字符串:

可能存在的问题  (1)

外部语言单元隐式调用 StartExternalSession 并使用单个会话:

x = 3
x

除非给定一个 ExternalSessionObject,每个 ExternalEvaluate 调用使用不同的会话:

使用 StartExternalSession 可进行持续运算:

每个运算都是在同一过程中进行的:

删除会话:

Wolfram Research (2017),ExternalEvaluate,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ExternalEvaluate.html (更新于 2024 年).

文本

Wolfram Research (2017),ExternalEvaluate,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ExternalEvaluate.html (更新于 2024 年).

CMS

Wolfram 语言. 2017. "ExternalEvaluate." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/ExternalEvaluate.html.

APA

Wolfram 语言. (2017). ExternalEvaluate. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ExternalEvaluate.html 年

BibTeX

@misc{reference.wolfram_2024_externalevaluate, author="Wolfram Research", title="{ExternalEvaluate}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/ExternalEvaluate.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_externalevaluate, organization={Wolfram Research}, title={ExternalEvaluate}, year={2024}, url={https://reference.wolfram.com/language/ref/ExternalEvaluate.html}, note=[Accessed: 22-November-2024 ]}