【问题标题】:What can Python do that Jython cannot?Python 能做什么而 Jython 不能?
【发布时间】:2012-10-23 17:00:03
【问题描述】:

我需要一个灵活的框架,并想尝试在它的不同位置注入一些代码,以便即时改变行为。

因为它是一个 Java 项目,而且基本上我只限于接口和玩那些我认为可以让 Jython 运行并看看它会带来什么的背后的实现。

我的意思是,eval() 是一个强大的函数,我可以将代码添加为字符串并对其进行评估,至少在 Python 中并且出现了问题,因为它基本上可以编译为 Java...

与 Python 相比,Jython 有哪些限制?我可以在 Python 中做哪些在 Jython 中无法做到的事情?

【问题讨论】:

  • 使用 Jython,您将无法在 cpython 生态系统中使用许多包,但您可以访问 Java 生态系统。由于您已经了解 Java,这可能是一个可以接受的折衷方案。有关更多信息,请参阅 Jython 常见问题解答,尤其是 Is Jython the same language as Python?
  • 例如 Python 可以使用 getpass 模块,而 Jython 不能。

标签: java python jython language-features


【解决方案1】:

如前一篇文章所述,您确实希望将 CPython 与 Jython 进行比较。如前所述,Jython 的稳定版本为 2.5.3,alpha 版本为 2.7。这意味着 Jython 缺少某些功能。例如,从 2.5 开始,有序字典、计数器和命名元组都被添加到 Collections 包中。使用 Jython,您不能使用许多第 3 方 Python 库,例如 NumPy、SciPy、GeoDjango、Lxml 或任何使用 C 扩展的东西。

另一方面,Jython 有一些使用 CPython 无法找到的好处。使用 Jython,您可以deploy Django on a standard Java server(例如 Tomcat、WebLogic 等...)。您可以从 Jython 代码调用现有的 Java 类。

【讨论】:

  • 不知道 Django 部署。谢谢!
【解决方案2】:

考虑将 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

【讨论】:

  • 我把我知道的,我建议发布一个更深入地讨论差异的答案。
  • @delnan -- 这是真的吗?就我而言,这个答案和 StevenRumbalski 对原始帖子的出色评论似乎很好地涵盖了它...... Python 可以执行 2.6、2.7、3.0、...3.3 版本中添加的任何操作,而 Jython 可以不。 Python 的启动速度也更快,并且可以使用 c 扩展。还有什么(主要)? - 像垃圾收集这样的小东西不太可能让提出这样的问题的人感兴趣......
  • @mgilson 当我发表评论时,答案仅限于“启动速度快 50 倍”。稍微了解一点。我认为 StevenRumbalski 的评论也非常重要,但这个答案不包含任何内容,我只是在谈论这个答案。此外,这些差异是我知道的,尽管从未研究过,更不用说使用它了——我怀疑还有更多差异。
猜你喜欢
  • 2011-08-23
  • 2018-05-30
  • 2010-11-24
  • 2016-05-28
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多