ExternalObject

Listing of External Evaluators »

ExternalObject[]

代表绑定到 ExternalSessionObject 的外部对象.

更多信息

范例

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

基本范例  (1)

用 Python 创建一个外部对象:

范围  (7)

为 Python 中的函数显示的键与内置函数和用户定义的函数有所不同:

在 Python 中定义一个对象并显示:

删除会话:

外部运算  (6)

"Eval"  (2)

启动 Python 会话处理字符串:

用包含有效 Python 代码的字符串创建一个 ExternalObject

使用 "Eval" 操作将字符串转换为 Python 代码:

结束会话:

启动 Python 会话处理字符串:

用包含有效 Python 代码和变量的字符串创建一个 ExternalObject

"Eval"操作下,使用一个运算上下文,将字符串运算为 Python 代码:

结束会话:

"Call"  (1)

启动 Python 会话:

定义一个 ExternalObject,用 Python 创建一个函数:

通过运行 ExternalOperation "Call" 调用函数:

"Call" 运算的任何参数都可以是 ExternalOperation

ExternalObject 也可用作参数:

参数也可以直接在 ExternalEvaluate 中传递:

其结果相当于运行以下 Python 代码:

结束会话:

"GetAttribute"  (1)

启动 Python 会话处理日期:

返回日期时间对象的 ExternalObject

使用 "GetAttribute" 提取年份属性:

使用 ExternalObject 子值也可以达到同样的效果:

对于 Python 运算器,"GetAttribute" 是默认操作,ExternalOperation 可以省略:

其结果相当于运行以下 Python 代码:

结束会话:

"SetAttribute"  (1)

启动 Python 会话处理十进制数:

获取十进制模块的上下文:

将精度设为 6:

检查精度是否设置为 6:

其结果相当于运行以下 Python 代码:

结束会话:

"Cast"  (1)

创建表示当前日期的 ExternalObject

使用 "Expression" 可将对象作为 Wolfram 语言表达式返回:

Cast 操作也可以在 ExternalObject 子值中运行:

符号 Expression 是相同运算的快捷方式:

以字符串形式返回对象:

符号 String 是相同运算的快捷方式:

将对象以 ExternalObject 的形式返回:

ExternalObject 符号是相同运算的快捷方式:

ExternalEvaluate 中使用 "ReturnType" 也能达到同样的效果:

结束会话:

属性和关系  (6)

ExternalOperation 可用于从 ExternalObject 中提取操作:

使用 ExternalFunction 也可以做同样的运算:

ExternalOperation 可用作 ExternalObject 的参数:

执行的操作与下面相同:

可通过 ExternalEvaluate 执行:

其结果相当于运行以下 Python 代码:

创建一个 ExternalObject,以便与 sys 模块一起使用:

当使用字符串时,"GetAttribute" 操作会在包括 Python 在内的大多数运算器中执行:

其结果等同于运行显式 "GetAttribute" 操作:

启动 Python 会话:

创建 ExternalObject

使用 ExternalFunction 在对象上运行方法:

结束会话:

启动 Python 会话:

为日期时间模块创建一个 ExternalObject

创建一个包含当前日期的 ExternalObject 和一个包含 timedelta 的 ExternalObject

使用 ExternalFunction 发送回对象:

ExternalEvaluate 调用也可以做到这一点:

使用 "ReturnType" 返回 String

结束会话:

可以使用 ExternalObject 中的多个参数来连接多个操作:

这可以写得更加简洁:

可能存在的问题  (1)

如果不检查每一步的返回值,使用下限值连续运行操作可能会导致未定义的行为:

出现这种情况是因为第一个操作返回的是 ExternalFunction(因为 date 是一个可以初始化的类),而您向 date 构造函数传递的是一个不完整的 ExternalOperation

为了安全地进行连锁操作,而不需要在每一步都检查返回类型,请一次性运行所有操作:

一旦任何操作失败,就会返回一个 Failure 对象,从而阻止其他操作运行:

结束会话:

巧妙范例  (1)

启动 Python 会话下棋:

创建一个 ExternalObject 来表示棋盘的状态:

定义一个绘制棋盘的函数:

使用该函数绘制棋盘:

通过从对象中提取属性来提取当前移动编号:

通过运行函数移动棋子;它将改变外部对象的状态:

再次绘制棋盘,显示新的棋子配置:

现在,您可以计算当前棋子配置下可以进行的所有合法移动:

通过外部操作链为 "UCI" 属性创建方法调用程序:

计算一次移动的 UCI 字符串:

现在您可以执行一次随机移动:

您可以使用绘图函数再次显示棋盘:

创建一个随机移动棋子的函数:

随机移动棋子:

显示当前移动计数器:

结束会话:

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

文本

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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