首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -> Python?

问Java -> Python?
EN

Stack Overflow用户
提问于 2008-09-08 14:36:24
回答 5查看 11.6K关注 0票数 29

除了Python的动态特性(和语法)之外,还有哪些Python语言的主要特性是Java没有的,反之亦然?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-08 15:35:33

  1. 列表理解。我经常发现自己过滤/映射列表,并且能够说[line.replace("spam","eggs") for line in open("somefile.txt") if line.startswith("nee")]是真正的nice.
  2. Functions是第一类对象。它们可以作为参数传递给其他函数,在其他函数中定义,并具有词法作用域。这使得说出像people.sort(key=lambda p: p.age)这样的东西变得非常容易,因此可以根据年龄对一群人进行排序,而不必定义自定义的比较器类或类似的东西verbose.
  3. Everything是一个对象。Java具有不是对象的基本类型,这就是为什么标准库中的许多类定义了9种不同版本的函数(用于boolean、byte、char、double、float、int、long、Object、short)。Array.sort就是一个很好的例子。自动装箱很有帮助,尽管当结果是null.
  4. Properties.时,它会让事情变得很尴尬Python允许您创建具有只读字段、延迟生成的字段以及在赋值时进行检查的字段的类,以确保它们永远不会为0或null或您想要防止的任何值、etc.'
  5. Default和关键字参数。在Java中,如果你想要一个可以接受最多5个可选参数的构造函数,你必须定义该构造函数的6个不同版本。而且根本没有办法说Student(name="Eli", age=25)
  6. Functions只能返回1个东西。在Python语言中,你有元组赋值,所以你可以说spam, eggs = nee(),但是在Java语言中,你需要求助于可变的输出参数,或者有一个带有两个字段的自定义类,然后有两行额外的代码来为列表和设计更好的库提取那些fields.
  7. Built-in语法。例如,要在Java中解析XML文档,您可以这样说

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("test.xml");

在Python中你会说

doc = parse("test.xml")

无论如何,我可以继续举更多的例子,但总的来说,Python是一种更灵活、更具表现力的语言。它也是动态类型的,我真的很喜欢,但这也有一些缺点。

Java的性能比Python好得多,而且对工具的支持也要好得多。有时这些事情很重要,对于任务来说Java是比Python更好的语言;我继续在一些新项目中使用Java,尽管我更喜欢Python。但作为一种语言,我认为Python在我发现自己需要完成的大多数事情上都更胜一筹。

票数 47
EN

Stack Overflow用户

发布于 2008-09-08 14:40:36

我认为Philip J.Eby的这两篇文章很好地讨论了两种语言之间的差异(主要是关于哲学/心理,而不是特定的语言特征)。

票数 16
EN

Stack Overflow用户

发布于 2008-09-08 14:43:09

Python中的一个关键区别是significant whitespace。这让很多人离开了很长一段时间--我也是--但一旦你开始使用它,它就会变得很自然,而且比任何地方的;都更有意义。

从个人角度来看,Python与Java相比具有以下优点:

除此之外,this page on the Python Wiki是一个很好的地方,有很多指向有趣文章的链接。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档