请给出在java中使用jython编写python的代码示例
时间: 2024-06-11 07:04:13 浏览: 147
在Java中使用Jython编写Python代码示例:
1. 导入Jython库和Python模块
```java
import org.python.util.PythonInterpreter;
import org.python.core.*;
// 创建Python解释器
PythonInterpreter interp = new PythonInterpreter();
// 导入Python模块
interp.exec("import math");
```
2. 执行Python脚本
```java
// 执行Python脚本
interp.exec("result = 2 + 2");
// 获取Python变量
PyObject result = interp.get("result");
// 输出结果
System.out.println(result);
```
3. 调用Python函数
```java
// 定义Python函数
interp.exec("def add(x, y):\n\treturn x + y");
// 调用Python函数
PyObject add = interp.get("add");
PyObject result = add.__call__(new PyInteger(2), new PyInteger(3));
// 输出结果
System.out.println(result);
```
4. 使用Java对象作为Python参数
```java
// 定义Java对象
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
// 创建Java对象
Person person = new Person("Tom", 20);
// 注册Java对象到Jython
interp.set("person", PyJavaType.wrapJavaObject(person));
// 调用Python函数,传入Java对象作为参数
PyObject func = interp.eval("lambda p: 'Name: %s, Age: %d' % (p.getName(), p.getAge())");
PyObject result = func.__call__(interp.get("person"));
// 输出结果
System.out.println(result);
```
5. 在Python中调用Java方法
```java
// 定义Java类
public class Calculator {
public static int add(int x, int y) {
return x + y;
}
}
// 注册Java类到Jython
interp.exec("import sys");
interp.exec("sys.path.append(\".\")");
interp.set("Calculator", PyJavaType.wrapJavaClass(Calculator.class));
// 在Python中调用Java方法
interp.exec("result = Calculator.add(2, 3)");
// 获取Python变量
PyObject result = interp.get("result");
// 输出结果
System.out.println(result);
```
阅读全文