1.Python进阶笔记——jython
Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。
下载地址:
https://sourceforge.net/projects/jython/
然后解压后,将其中的jython.jar添加到工程目录.
代码如下:
import org.python.util.PythonInterpreter;
publicclass TwoPanel
{
publicstaticvoid main(String args[])
{
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun');");
interpreter.exec("print days[1];");
}//main
}
执行输入Tue.
定义JAVA函数文件test.py如下:
def adder(a, b):
return a+ b
调用代码如下:
import javax.script.*;
import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;
import java.io.*;
importstatic java.lang.System.*;
publicclass TwoPanel
{
publicstaticvoid main(String args[])
{
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("F:\\java_zhizuo\\GUI-TEST\\test.py");
PyFunction func =(PyFunction)interpreter.get("adder",PyFunction.class);
inta = 2010, b = 2 ;
PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));
System.out.println("anwser = " + pyobj.toString());
}//main
}
执行结果:
anwser = 2012
创建python文件如下,test.py
print 'hello'
number=[3,5,2,0,6]
print number
number.sort()
print number
number.append(0)
print number
print number.count(0)
print number.index(5)
执行代码如下:
import javax.script.*;
import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;
import java.io.*;
importstatic java.lang.System.*;
publicclass TwoPanel
{
publicstaticvoid main(String args[])
{
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("F:\\java_zhizuo\\GUI-TEST\\test.py");
}//main
}
直接结果:
hello
[3, 5,2, 0, 6]
[0, 2,3, 5, 6]
[0, 2,3, 5, 6, 0]
2
3
在Help->Install new Software..安装PyDev插件
PyDev - http://pydev.org/updates
选择PyDev for Eclipse选项
在用jython在eclipse中开发的时候,控制台的输出可能会出现
console: Failed to install ”: Java.nio.charset.UnsupportedCharsetException:cp0.
这样一个错误,此时如果控制台的错误堆栈中有中文的时候,中文就会显示为乱码,解决办法为在要执行的代码上右键,
Run As>Run Configurations,选择第二个页签Arguments,在VM arguments中添加
-Dpython.console.encoding=UTF-8