在JavaScript中调用Python函数,你可以使用一些库来帮助你实现,例如`python-shell`、`node-python-bridge`、`JSPyBridge`和`eel`¹²。以下是一些基本的示例:
**使用`python-shell`库:**
```javascript
var { PythonShell } = require('python-shell');
var options = {
mode: 'text',
pythonOptions: ['-u'], // get print results in real-time
scriptPath: 'path/to/your/python/script',
args: ['value1', 'value2', 'value3']
};
PythonShell.run('my_script.py', options, function (err, results) {
if (err) throw err;
// results is an array consisting of messages collected during execution
console.log('results: %j', results);
});
```
在这个例子中,我们首先导入了`python-shell`库,然后定义了一些选项,包括脚本路径和参数。然后,我们使用`PythonShell.run`方法来运行Python脚本,并处理返回的结果¹。
**使用`node-python-bridge`库:**
```javascript
var pythonBridge = require('python-bridge');
var python = pythonBridge();
python.ex`import math`
python`math.sqrt(2)`.then(x => console.log(x)); // prints: 1.4142135623730951
```
在这个例子中,我们首先导入了`node-python-bridge`库,然后创建了一个Python环境。然后,我们在Python环境中执行了一些代码,并获取了返回的结果¹。
**使用`JSPyBridge`库:**
```python
# Python
import javascript
@javascript.expose
def add(a, b):
return a + b
```
```javascript
// JavaScript
const python = require('pythonia');
console.log(python.add(1, 2)); // prints: 3
```
在这个例子中,我们首先在Python代码中定义了一个函数,并使用`@javascript.expose`装饰器将其暴露给JavaScript。然后,在JavaScript代码中,我们导入了`pythonia`库,并调用了Python函数¹。
**使用`eel`库:**
```python
# Python
import eel
eel.init('web') # Give folder containing web files
@eel.expose
def my_python_function(a, b):
return a + b
eel.start('main.html') # Start (this blocks and enters loop)
```
```javascript
// JavaScript
async function run() {
let val = await eel.my_python_function(1, 2)(); // Must prefix call with `await`
console.log(val); // prints: 3
}
run();
```
在这个例子中,我们首先在Python代码中定义了一个函数,并使用`@eel.expose`装饰器将其暴露给JavaScript。然后,在JavaScript代码中,我们调用了Python函数²。
这只是一些基本的示例,你可能需要根据你的具体需求进行修改或扩展。如果你有任何问题,欢迎随时向我提问。😊
源: 与必应的对话, 2023/11/6
(1) Python与Javascript相互调用超详细讲解(一)基本原理 Part 1 - 通过子进程和进程间通信(IPC). https://zhuanlan.zhihu.com/p/457592534.
(2) js调用Python函数 - 知乎. https://zhuanlan.zhihu.com/p/448356773.
(3) 奇技淫巧之如何在JavaScript中使用Python代码 - 掘金. https://juejin.cn/post/7249930189182353468.
(4) github.com. https://github.com/elitelinuxuser/node-python/tree/8d3cca1d0e3a2ca2122baf2083c647846bfb315f/index.js.
(5) github.com. https://github.com/edverma/AnalyticsApp/tree/3312d97dde4ea92b830465010673e00284741285/node_modules%2Fpython-shell%2FREADME.md.