javascript - 将变量从 Javascript 传递到 Python 脚本
问题描述
我正在尝试使用 Javascript 来调用 Python 脚本。此外,我必须将变量从我的 Javascript 传递给 Python 脚本。在 Python 中返回结果后,我想将此结果传递回 Javascript。我不确定最好的方法是什么。
我已经看到了烧瓶和 json 的各种实现,但我很困惑哪种方法是最好的方法。
举个例子,这就是我想要做的:
Javascript.js
myJSVariable1 = “Hello “
myJSVariable2 = “World!”
result = callPythonScript(myJSVariable1, myJSVariable2)
console.log(result)
pythonScript.py
print(myJSVariable1, myJSVariable2)
在此示例中,我希望 console.log(result) 返回“Hello World!” 因为 pythonScript.py 打印 myJSVariable1 与 myJSVariable2 连接的结果。
有没有人对做这样的事情有任何建议?
解决方案
变量是一个与单一编程语言密切相关的概念,实际上甚至是单一编程语言实现。在编程语言之间传递变量,甚至在同一编程语言的不同实现之间传递变量通常是不可能的,除非这些实现是专门为允许这种多语言编程风格而编写的。
我知道有四种编程语言实现框架被明确设计为允许以支持多语言编程的方式编写编程语言实现:
然而,不幸的是,似乎没有一个同时具有生产质量的 Python 和 ECMAScript 实现:
Parrot 被遗弃,自 2016-02-16 以来没有发布,自 2017-10-02 以来没有提交。
此外,Parrot 的任何 Python 实现都没有接近生产就绪状态:
- 海盗
Parrot 的 ECMAScript 实现也是如此:
- PJS
目前,在 Rubinius 上,除了 Ruby 之外,没有其他语言实现可用于生产:
DLR 的精简、冻结版本作为 .NET 的一部分提供,但 Microsoft 本身已经放弃了它。不过,它仍在作为IronLanguages项目的一部分进行开发。
- IronPython是 DLR 上 Python 2 的成熟、可生产就绪的实现,但Python 3 支持尚未生产就绪。
不幸的是,DLR 上的所有 ECMAScript 实现都已被放弃:
Managed JScript 是 Microsoft 的官方 ECMAScript 实现,旨在成为 DLR 的典型代表之一,但它从未发布过并且早已被废弃。
- IronJS被废弃了。
Truffle 得到积极维护、积极开发和生产准备。
因此,正如您所看到的,虽然有一些多语言编程语言实现框架,并且这些框架有一些 Python 和 ECMAScript 实现,但不幸的是,没有一个框架同时具有 Python 和 ECMAScript 的生产就绪实现:DLR 有Python (2) 但没有 ECMAScript,Truffle 有 ECMAScript 但没有 Python。
但是,您传递变量的想法还有另一个问题:Python 和 ECMAScript 都没有具体化变量,IOW,变量不是这些语言中的对象(或原语)。而且您只能传递值,即对象和原语。
推荐阅读
- azure - 从 Azure 数据工厂将文件作为八位字节流上传
- java - 用于列表、集合等集合的 Spring Standalone util 架构
- hyperledger-fabric - HyperLedger Fabric - configtx.yaml 策略 - 加入通道接收访问被拒绝
- python - 检查数字是否重复,如果重复,则添加另一个值,Python
- c++ - 调试断言
- gatsby - Gatsby 站点地图生成器未过滤页面
- python - 如何自动更新pysimplegui列滚动条
- javascript - 如何使用 docs-api(节点)将 N 个谷歌文档合二为一
- python - 我已经完成了狙击命令,它可以狙击图像吗?
- cmake - CMakeList - 如何使用较旧的 cmake 修补源代码