ExternalOperation["Eval","code"]
表示 "code" 的外部运算.
ExternalOperation["Eval","code",assoc]
表示 "code" 的外部运算,参数由 assoc 给出.
ExternalOperation["Call",func,arg1,arg2,…]
用给定的参数 arg1、arg2、… 调用函数 func.
ExternalOperation["GetAttribute",obj,"attr"]
获取 obj 的属性 "attr".
ExternalOperation["SetAttribute",obj,"attr",val]
将 obj 的属性 "attr" 设为给定值 val.
ExternalOperation["Cast",obj,"type"]
将 obj 的类型强制设为给定的 "type".
ExternalOperation["op", arg1,arg2,…]
表示使用参数 arg1、arg2、… 的名为 "op" 的外部运算.
ExternalOperation
外部运算器列表 »ExternalOperation["Eval","code"]
表示 "code" 的外部运算.
ExternalOperation["Eval","code",assoc]
表示 "code" 的外部运算,参数由 assoc 给出.
ExternalOperation["Call",func,arg1,arg2,…]
用给定的参数 arg1、arg2、… 调用函数 func.
ExternalOperation["GetAttribute",obj,"attr"]
获取 obj 的属性 "attr".
ExternalOperation["SetAttribute",obj,"attr",val]
将 obj 的属性 "attr" 设为给定值 val.
ExternalOperation["Cast",obj,"type"]
将 obj 的类型强制设为给定的 "type".
ExternalOperation["op", arg1,arg2,…]
表示使用参数 arg1、arg2、… 的名为 "op" 的外部运算.
更多信息
- ExternalOperation 表示要在 ExternalEvaluate 系统中执行的远程过程调用,如 "Python"、"Ruby"、"NodeJS".
- ExternalOperation["op",…] 中可用的运算 "op" 因系统而异.
- 可用 ExternalEvaluate["system",ExternalOperation[…]] 对 ExternalOperation[…] 进行计算.
- ExternalOperation["op",params…][args…] 的计算结果为 ExternalOperation["op",args…,params…].
- ExternalObject[…][ExternalOperation[…]] 等价于 ExternalEvaluate["system",ExternalOperation[…][ExternalObject[…]]].
范例
打开所有单元 关闭所有单元基本范例 (1)
创建一个 ExternalOperation,计算代码 "2+2":
op = ExternalOperation["Eval", "2+2"]用 ExternalEvaluate 执行计算:
ExternalEvaluate["Python", op]范围 (7)
ExternalOperation 不执行计算:
call = ExternalOperation["Call"]op = call[ExternalOperation["Eval", "max"], 1, 2]用 ExternalEvaluate 执行计算:
ExternalEvaluate["Python", op]yeargetter = ExternalOperation["GetAttribute", "year"]session = StartExternalSession["Python"]创建一个 ExternalObject:
date = ExternalEvaluate[session, <|"Command" -> ExternalOperation["Import", "datetime", "date"], "Arguments" -> {2012, 10, 10}, "ReturnType" -> "ExternalObject"|>]date[yeargetter]year = yeargetter[date]需使用 ExternalEvaluate 执行计算:
ExternalEvaluate[session, year]DeleteObject[session]外部运算 (5)
"Eval" (1)
运行一个表示在 Python 中对代码进行计算的 ExternalOperation:
ExternalEvaluate["Python", ExternalOperation["Eval", "2+2"]]ExternalEvaluate["Python", ExternalOperation["Eval", "a + b", <|"a" -> 2, "b" -> 3|>]]"Call" (1)
定义一个在 Python 中创建函数的 ExternalOperation:
op = ExternalOperation["Eval", "max"]通过运行 ExternalOperation "Call" 调用函数:
call = ExternalOperation["Call", op, 1, 2]用 ExternalEvaluate 执行运算:
ExternalEvaluate["Python", call]"Call" 运算的任何参数都可以是 ExternalOperation:
ExternalEvaluate["Python", ExternalOperation["Call", op, 1, ExternalOperation["Eval", "2+2"]]]也可以通过以下方式直接在 ExternalEvaluate 中传递参数:
ExternalEvaluate["Python", op -> {1, 2}]ExternalEvaluate["Python", "max(1, 2)"]"GetAttribute" (1)
session = StartExternalSession[{"Python", "SessionProlog" -> "import datetime"}];返回日期时间对象的 ExternalObject:
now = ExternalEvaluate[session, <|"Command" -> "datetime.datetime.now()", "ReturnType" -> "ExternalObject"|>]ExternalEvaluate[session, ExternalOperation["GetAttribute", now, "year"]]ExternalEvaluate[session, "datetime.datetime.now().year"]DeleteObject[session]"SetAttribute" (1)
session = StartExternalSession[{"Python", "SessionProlog" -> "from decimal import getcontext, Decimal"}];context = ExternalEvaluate[session, "getcontext()"]ExternalEvaluate[session, ExternalOperation["SetAttribute", context, "prec", 6]]ExternalEvaluate[session, ExternalOperation["GetAttribute", context, "prec"]]ExternalEvaluate[session, "Decimal('0') + Decimal('0.123456789')"]ExternalEvaluate[session, "getcontext().prec = 6"]DeleteObject[session]"Cast" (1)
创建一个表示当前日期的 ExternalObject:
session = StartExternalSession["Python"];now = ExternalEvaluate[session, <|"Command" -> "import datetime; datetime.datetime.now()", "ReturnType" -> "ExternalObject"|>]通过 "Expression" 将对象作为 Wolfram 语言表达式返回:
ExternalEvaluate[session, ExternalOperation["Cast", now, "Expression"]]Cast 运算也可以在 ExternalObject 子值中运行:
now[ExternalOperation["Cast", "Expression"]]符号 Expression 是可以完成相同任务的更便捷的方式:
now[Expression]now[ExternalOperation["Cast", "String"]]符号 String 是可以完成相同任务的更便捷的方式:
now[String]将对象作为 ExternalObject 返回:
now[ExternalOperation["Cast", "ExternalObject"]]符号 ExternalObject 是可以完成相同任务的更便捷的方式:
now[ExternalObject]可通过 ExternalEvaluate 中的 "ReturnType" 完成相同的任务:
ExternalEvaluate[session, <|"Command" -> now, "ReturnType" -> "String"|>]DeleteObject[session]属性和关系 (5)
ExternalOperation 可用于从 ExternalObject 中提取运算:
ExternalOperation[ExternalObject["Python", "2+2"]]可用 ExternalFunction 完成相同的任务:
ExternalOperation[ExternalFunction["Python", "str"]]可将 ExternalOperation 用作 ExternalFunction 的一个参数:
ExternalFunction["Python", "len"][ExternalOperation["Eval", "[1, 2, 3]"]]可用 ExternalEvaluate 完成相同的任务:
ExternalEvaluate["Python", "len" -> ExternalOperation["Eval", "[1, 2, 3]"]]可将 ExternalOperation 用作 ExternalObject 的一个参数:
ExternalObject["Python", "len"][ExternalOperation["Call", {1, 2, 3}]]op = ExternalOperation["Call", {1, 2, 3}][ExternalObject["Python", "len"]]可用 ExternalEvaluate 执行:
ExternalEvaluate["Python", op]ExternalEvaluate["Python", "len((1, 2, 3))"]创建一个 ExternalObject,与 sys 模块一起使用:
sys = ExternalObject["Python", ExternalOperation["Import", "sys"]]当使用字符串时,大多数运算器(包括 Python)都会执行 "GetAttribute" 运算:
sys["maxsize"]sys[ExternalOperation["GetAttribute", "maxsize"]]可通过 ExternalObject 中的多个参数将多个运算连在一起:
uuid = ExternalObject["Python", ExternalOperation["Import", "uuid"]]uuid[ExternalOperation["GetAttribute", "uuid4"], ExternalOperation["Call"], ExternalOperation["Cast", "String"]]uuid["uuid4" -> {}, String]相关指南
-
▪
- 外部已诠释的语言接口 ▪
- 外部语言接口
文本
Wolfram Research (2024),ExternalOperation,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ExternalOperation.html.
CMS
Wolfram 语言. 2024. "ExternalOperation." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/ExternalOperation.html.
APA
Wolfram 语言. (2024). ExternalOperation. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ExternalOperation.html 年
BibTeX
@misc{reference.wolfram_2026_externaloperation, author="Wolfram Research", title="{ExternalOperation}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/ExternalOperation.html}", note=[Accessed: 14-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_externaloperation, organization={Wolfram Research}, title={ExternalOperation}, year={2024}, url={https://reference.wolfram.com/language/ref/ExternalOperation.html}, note=[Accessed: 14-October-2026]}