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]
计算指定 ExternalObject、ExternalOperation、File、URL 或 CloudObject 的内容.
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)
使用 Node.js 在 JavaScript 中计算简单数学函数:
使用 File 包装器来执行文件中的代码:
使用 CloudDeploy 部署代码,然后直接从 CloudObject 中运行代码:
使用 URL 包装器来直接运行在线托管的代码:
将 Julia 字典作为 Association 返回:
用一个 Wolfram 语言表达式作为参数,根据名称运算函数:
在行的开头用 > 开启一个利用 ExternalEvaluate 进行计算的外部代码单元:
范围 (36)
基本范例 (4)
将结果作为 Python dict 返回,给出一个 Association:
许多类型,如 datetime,可自然映射到 Wolfram 语言表达式:
在 Python 中使用内联 TemplateExpression 将两个数字相加:
使用 ExternalOperation 组成复杂的操作:
会话选项 (13)
"ReturnType" (4)
对于大多数系统来说,默认的返回类型是 "Expression":
对于 "Expression" 返回类型,数字、字符串、列表和关联被自动导入:
对于返回类型 "String",返回的结果是以外部语言给出的字符串:
"Evaluator" (3)
可以使用 "Evaluator" 确保只使用运算器的一个特定版本:
在使用带有 "SQL" 运算器的文件时,运算器可以是 SQLite File 的路径或 DatabaseReference 规范:
Association 可用于运算 Python 配置环境中的代码:
"SessionProlog" (2)
命令选项 (19)
"Command" (7)
使用 File 包装器运行文件中的代码:
使用 URL 包装器来直接运行在线的代码:
将代码放入 CloudObject:
ExternalOperation 可用于 "Command":
ExternalFunction 可用于 "Command":
创建 ExternalObject:
使用 "Command" 和 "Arguments" 调用对象:
"Arguments" (4)
如果需要传递列表作为第一个参数,则需要明确使用一个额外列表进行包装:
可以在 "Command" 中定义一个函数,然后用 "Arguments" 直接进行调用:
通过使用 Rule 可以得到同样的结果:
另一种方法是定义 ExternalFunction:
ExternalOperation 可用于 "Arguments":
创建 ExternalObject:
"Constants" (3)
"TemplateArguments" (4)
运行命令时,可以内联一个 TemplateExpression:
可以使用 "TemplateArguments" 明确填写 TemplateSlot:
如果需要传递列表作为第一个参数,则需要明确使用额外列表进行包装:
可以为模板槽命名,并使用 Association 来向模板传递命名的参数:
ExternalOperation 可用于 "TemplateArguments":
ExternalFunction 可用于 "TemplateArguments":
属性和关系 (4)
计算失败时,返回 Failure 对象:
外部语言单元隐式调用 StartExternalSession:
一组独立的 ExternalEvaluate 调用中分别使用单独的会话:
"String" 和 "Expression" 返回类型可用导入和导出进行关联:
使用带有 "PythonExpression" 的 ImportString 将 Python 字符串转换为表达式:
反之,使用 ExportString 将表达式转换为 Python 字符串:
可能存在的问题 (1)
外部语言单元隐式调用 StartExternalSession 并使用单个会话:
除非给定一个 ExternalSessionObject,每个 ExternalEvaluate 调用使用不同的会话:
使用 StartExternalSession 可进行持续运算:
文本
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 年