使用if foo is None而不是if foo == None测试值是否具体是标准惯例None.
如果你想确定一个值是否正确True(不仅仅是一个真实的值),是否有任何理由使用if foo == True而不是if foo is True?这在CPython(2.x和3.x),Jython,PyPy等实现之间是否有所不同?
示例:say True用作要与值'bar'或任何其他类似真值的值区分开的单例值:
if foo is True: # vs foo == True
...
elif foo == 'bar':
...
Run Code Online (Sandbox Code Playgroud)
是否存在使用if foo is True会产生不同结果的情况if foo == True?
注意:我知道Python布尔值 - 如果x:,则vs x == True,vs如果x为True.但是,它仅解决是否if foo,if foo == True或if foo is True通常应用于确定是否foo具有真实值. …
我知道我可以用Java安装Jython,并且我可以在使用Python的地方使用Jython.Jython shell工作正常.
在Jython中,我如何安装类似的库lxml,Scrappy并且BeautifulSoup我通常通过pip或安装easy_install
我想做类似的事情jython -cp FOO:BAR:BAZ argle.py.
如果我添加FOO,BAR和BAZ,$CLASSPATH这是有效的.我尝试sys.path在运行时添加它们,但这似乎不适用于jar.如果我在运行时添加扩展jar的路径,它确实有效sys.path.是否有一个简单的替代方案来爆炸jar文件?$CLASSPATH为每个运行此脚本的用户进行扩充是不可接受的替代方案.
谢谢.
请不要发生火焰战争.我确实不是Java的粉丝,但我认为JVM是一个相当不错且优化得很好的虚拟机.它支持JIT,非常接近流行的CPU架构的共同点.我假设CPython运行时比相应的基于JVM的运行时更远离金属.
如果我的假设是正确的,那么有人可以向我解释为什么Jython与CPython相比会遭受如此重大的性能损失吗?我最初的假设是JVM只是为静态语言设计的,而且很难将动态语言移植到它上面.然而,Clojure似乎是这一论点的一个反例.
另一方面,IronPython似乎做得很好.我相信这两个项目的主要开发人员是相同的,所以一个代码设计和实现明显优于另一个的论点似乎不太可能.
我无法弄清楚具体原因是什么; 任何帮助将不胜感激.
当我可以使用Jython或Jruby时,为什么我会选择使用Groovy?该语言是否提供了任何固有的优势来弥补Jython和Jruby技能适用于JVM之外的其他语言的事实?
请记住,我故意将此问题保持为通用,但如果特定域中存在任何优势,请不要犹豫,对其进行描述.
编辑
为了澄清,如果我在Jruby中编写一些代码,在某些情况下,如果需要,我现在可以将代码移到JVM之外,或者至少我已经对Ruby有了更好的理解.而Groovy技能仅在使用JVM中存在的语言时才适用.Jython和Jruby具有这种内置优势,Groovy必须弥补这一劣势吗?
如果Groovy没有你找到的任何优势,你建议只使用Jython或Jruby,请告诉我.
编辑2
感谢大家的所有答案,其中大多数都提出了相同的观点,Groovy与Java,Jython或Jruby集成得稍好一些.
跟进
使用Netbeans 6.5作为我的IDE我发现Groovy可以更好地与Java项目集成,然后是Jruby.我不确定缺乏集成是否是Jruby或Netbeans的失败.但是在使用它之后,Groovy似乎肯定会有所帮助.
我在Eclipse下使用PyDev来编写一些Jython代码.我有很多实例需要做这样的事情:
import com.work.project.component.client.Interface.ISubInterface as ISubInterface
Run Code Online (Sandbox Code Playgroud)
问题是PyDev总是将此标记为错误并说"Unresolved import:ISubInterface".代码工作正常,只是我宁愿在我的代码旁边没有这些小的白色/红色X标记,并且我的问题标签中充斥着这些错误.
有没有办法我可以添加一个魔术评论或类似的东西到行的末尾,使PyDev忽略错误的错误,类似于你可以像"#pylint:disable-msg = E1101"这样的评论来使PyLint忽略错误?
此外,在Jython中使用Java接口时,我有可能做错了.在这种情况下,我们非常感谢一点指导.
我有一个python应用程序和Java应用程序.python应用程序为java应用程序生成输入并在命令行上调用它.
我相信必须有一个更优雅的解决方案; 就像使用JNI从Java调用C代码一样.
有什么指针吗?(仅供参考,我是Python的新手)
澄清(以长期问题为代价:道歉)py app(我不拥有)以多个配置文件的形式获取用户输入.然后它通过插件机制将这些和农场工作转移到许多(隐藏的)工具上.我希望添加对旧版Java应用程序提供的功能的支持.
因此从java应用程序调用python应用程序是没有意义的,我无法在jython环境(在JVM上)上运行py app.
由于没有明显的机制,我认为简单的CL调用是最好的解决方案.
我想在IPython中使用Jython解释器,这样我就可以使用像tab完成的东西,也许还可以使用IPython笔记本.该IPython的常见问题现场周围,这是否是可能的步骤.我有两个问题:
说Jython 可以与IPython一起工作:我如何实际将它们绑在一起?当我执行时$ ipython,我正在运行Python解释器.如何设置IPython以便运行Jython解释器?
即使我知道如何做#1,我也一直在搜索,似乎让Jython与IPython合作的努力已经被淘汰,可能是因为常见问题解答网站上提到的readline问题.但是,搜索显示readline应该在Jython中工作; 看看jython wiki.所以,这里的问题是:如果某种readline功能可用,现在可以在IPython中使用Jython吗?
有没有可以自动将Python转换为Java的工具?Jython能做到这一点吗?
我有一个包含字段名称和jdbc类型代码的数组.(你可以找到的那些int代码
http://download.oracle.com/javase/1.4.2/docs/api/constant-values.html#java.sql.Types.BIT
我使用4级驱动程序.
我无法弄清楚如何向驱动程序询问相应的SQL(DDL)类型名称.它在jdbc和原生方言中很有用.
我有
(CustomerId,1)(客户名称,-8)
而且我要
(customerId,INT)(customerId,VARCHAR(200))
我在哪里可以找到帮助我的功能?我通过zxJDBC在jython中使用jdbc,所以我可以使用所有java和python DB API 2.0功能.