如何在js中调用python函数
时间: 2023-06-11 07:08:29 浏览: 231
在JavaScript中调用Python函数可以使用WebAssembly(WASM)或Node.js。下面分别介绍这两种方法:
1. 使用WebAssembly
WebAssembly是一种低级字节码,可在现代Web浏览器中运行,并且可以与JavaScript交互。为了在JavaScript中调用Python函数,您需要将Python代码编译为WASM模块,然后使用JavaScript来加载和调用该模块。您可以使用Emscripten或Pyodide等工具来将Python编译为WASM模块。
以下是一个简单的示例:
```python
# hello.py
def hello(name):
return "Hello, " + name + "!"
```
```javascript
// index.js
async function loadWebAssembly(filename, imports = {}) {
const response = await fetch(filename);
const buffer = await response.arrayBuffer();
const module = await WebAssembly.instantiate(buffer, imports);
return module.instance.exports;
}
loadWebAssembly('hello.wasm').then(module => {
const result = module._hello('world');
console.log(result);
});
```
2. 使用Node.js
如果您想在服务器端使用Python函数,可以使用Node.js中的child_process模块来调用Python脚本,并将其输出返回给JavaScript。
以下是一个简单的示例:
```python
# hello.py
def hello(name):
return "Hello, " + name + "!"
```
```javascript
// index.js
const { spawn } = require('child_process');
function callPythonScript(scriptPath, args) {
return new Promise((resolve, reject) => {
const process = spawn('python', [scriptPath, ...args]);
let output = '';
process.stdout.on('data', data => {
output += data.toString();
});
process.stderr.on('data', data => {
reject(data.toString());
});
process.on('error', error => {
reject(error);
});
process.on('close', code => {
if (code !== 0) {
reject(`Python script exited with code ${code}`);
} else {
resolve(output);
}
});
});
}
callPythonScript('hello.py', ['world']).then(output => {
console.log(output);
});
```
阅读全文