接单时遇到的奇怪需求,在Java代码中调用Python文件中的某个函数,需要传递参数和接受结果。

实现方式如下:

1、引入依赖

<dependency>
	<groupId>org.python</groupId>
	<artifactId>jython-standalone</artifactId>
	<version>2.7.0</version>
</dependency>

2、导入包

import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;

3、代码实现

public class Test {
    public static void main(String[] args) {
        int a = 2, b = 3;
        // 创建Python解释器
        PythonInterpreter interpreter = new PythonInterpreter();
        // 设置Python文件路径
        interpreter.execfile("./test.py");
        // 获取要执行的Python函数
        PyFunction pyFunction = interpreter.get("add", PyFunction.class);
        // 传入参数并获取返回对象
        PyObject py_obj = pyFunction.__call__(new PyInteger(a), new PyInteger(b));
        System.out.println(py_obj);
    }
}