chaquopy框架

chaquopy框架

Java中调用Python

// 调用python代码

    void callPythonCode(){

        Python py = Python.getInstance();

        // 调用hello.py模块中的greet函数,并传一个参数

        // 等价用法:py.getModule("hello").get("greet").call("Android");

        py.getModule("hello").callAttr("greet", "Android");

        // 调用python内建函数help(),输出了帮助信息

        py.getBuiltins().get("help").call();

        PyObject obj1 = py.getModule("hello").callAttr("add", 2,3);

        // 将Python返回值换为Java中的Integer类型

        String sum = obj1.toJava(String.class);

        Log.d("gss","add = "+ sum);

        // 调用python函数,命名式传参,等同 sub(10,b=1,c=3)

        PyObject obj2 = py.getModule("hello").callAttr("sub", 10,new Kwarg("b", 1), new Kwarg("c", 3));

        Integer result = obj2.toJava(Integer.class);

        Log.d("gss","sub = "+result.toString());

//        // 调用Python函数,将返回的Python中的list转为Java的list

//        PyObject obj3 = py.getModule("hello").callAttr("get_list", 10,"xx",5.6,'c');

//        List<PyObject> pyList = obj3.asList();

//        Log.d("gss","get_list = "+pyList.toString());

        // 将Java的ArrayList对象传入Python中使用

        List<PyObject> params = new ArrayList<PyObject>();

        params.add(PyObject.fromJava("alex"));

        params.add(PyObject.fromJava("bruce"));

        py.getModule("hello").callAttr("print_list", params);

        // Python中调用Java类

        PyObject obj4 = py.getModule("hello").callAttr("get_java_bean");

        JavaBean data = obj4.toJava(JavaBean.class);

        data.print();

    }

Python代码

在python文件夹中创建hello.py

from java import jclass

def greet(name):

    print("--- hello,%s ---" % name)

def add(a,b):

    return a + b

def sub(count,a=0,b=0,c=0):

    return count - a - b -c

def get_list(a,b,c,d):

    return [a,b,c,d]

def print_list(data):

    print(type(data))

    # 遍历Java的ArrayList对象

    for i in range(data.size()):

        print(data.get(i))

# python调用Java类

def get_java_bean():

    JavaBean = jclass("org.hello.JavaBean")

    jb = JavaBean("python")

    jb.setData("json")

    jb.setData("xml")

    jb.setData("xhtml")

    return jb

参考链接:

https://blog.csdn.net/wwb1990/article/details/104051068

https://blog.csdn.net/yingshukun/article/details/100175638

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时代我西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值