我需要一个灵活的框架,并希望尝试在其中的不同位置注入一些代码,以便即时更改行为。
因为它是一个Java项目,基本上我只限于接口和玩那些后面的实现,我想我可能会给Jython一个运行,看看它可能带来什么。
我的意思是,eval()
是一个功能强大的函数,我可以将代码添加为字符串并进行评估,至少在Python中有问题,因为它基本上编译为Java ...
与Python相比,Jython有哪些限制?我在Python中可以做什么,我在Jython中无法做到?
答案 0 :(得分:4)
正如上一篇文章所述,您真的希望将CPython与Jython进行比较。如前所述,Jython的稳定版本为2.5.3,alpha版本为2.7。这意味着Jython缺少某些功能。例如,自2.5以来,有序词典,计数器和命名元组都被添加到Collections包中。使用Jython,您不能使用许多第三方Python库,如NumPy,SciPy,GeoDjango,Lxml或任何使用C扩展的东西。
另一方面,Jython有一些使用CPython无法找到的好处。使用Jython,您可以deploy Django on a standard Java server(例如Tomcat,WebLogic等)。您可以从Jython代码调用现有的Java类。
答案 1 :(得分:1)
考虑将jython与cpython进行比较,因为它们都是python,但是一个用c实现,另一个用Java实现。因此,使用cpython,启动时间会快得多。如果你查看每个执行hello world示例的启动时间,那么cpython执行代码的速度要快50倍。 Jython stable目前正在使用Python 2.5,它比2系列中当前的python 2.7要老得多,而且它们没有python3的实现。所以你会错过那里的一些功能。
$ time jython -c "print 'hello'"
hello
real 0m1.641s
$ time python -c "print 'hello'"
hello
real 0m0.026s