我正在尝试使用Javascript调用Python脚本。另外,我必须将变量从Javascript传递给Python脚本。在Python中返回结果后,我想将此结果传递回Javascript。我不确定执行此操作的最佳方法是什么。
我已经看到了flask和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打印出与myJSVariable2串联的myJSVariable1的结果。
有人对做这样的事情有任何建议吗?
答案 0 :(得分:0)
变量是与单一编程语言(实际上甚至是单一编程语言实现)紧密相关的概念。通常不可能在编程语言之间,甚至在相同编程语言的不同实现之间传递变量,除非已经专门编写了这些实现以允许进行这样的 polyglot编程样式。
据我所知,有四种编程语言实现框架被明确设计为允许以支持多语言编程的方式编写编程语言实现:
但是,不幸的是,似乎没有一个产品同时具有生产质量的Python和ECMAScript实现:
鹦鹉已被放弃,自2016年2月16日以来没有发布过,而且自2017年10月2日以来没有提交。
此外,Parrot的所有Python实现都没有接近生产就绪的状态:
Parrot的ECMAScript实现也是如此:
目前在Rubinius上,除了Ruby之外,没有其他语言实现可用于生产环境:
.NET附带了简化的DLR冻结版本,但Microsoft本身已放弃了它。 It is still being developed作为IronLanguages项目的一部分。
不幸的是,所有在DLR上的ECMAScript实现都被放弃了:
托管JScript是Microsoft的官方ECMAScript实现,旨在成为DLR的先驱者之一,但它从未发布过,并且早已被放弃。
松露得到了积极的维护,积极的开发和生产准备。
因此,正如您所看到的,虽然有一些多语言编程语言实现框架,并且有一些针对这些框架的Python和ECMAScript实现,但是不幸的是,没有一个框架同时具有Python和ECMAScript的生产就绪型实现。 :DLR具有Python(2),但没有ECMAScript,松露具有ECMAScript,但没有Python。
但是,您传递变量的想法还有另一个问题:Python和ECMAScript都不能对变量,IOW进行变量化,它们不是这些语言中的对象(或原语)。而且,您只能传递值,即对象和基元。