当前位置:  开发笔记 > 编程语言 > 正文

Java - > Python?

如何解决《Java->Python?》经验,为你挑选了3个好方法。

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



1> Eli Courtwri..:

    列表理解.我经常发现自己过滤/映射列表,并且能说[line.replace("spam","eggs") for line in open("somefile.txt") if line.startswith("nee")]真的很好.

    函数是第一类对象.它们可以作为参数传递给其他函数,在其他函数中定义,并具有词法范围.这样就可以很容易地说出类似的东西people.sort(key=lambda p: p.age),从而在他们的年龄上对一群人进行排序,而无需定义自定义比较器类或同样冗长的东西.

    一切都是对象.Java具有非对象的基本类型,这就是为什么标准库中的许多类定义了9个不同版本的函数(对于boolean,byte,char,double,float,int,long,Object,short). Array.sort是一个很好的例子.自动装箱有所帮助,虽然当事情变成无效时会让事情变得尴尬.

    属性.Python允许您创建具有只读字段,延迟生成字段的类,以及在分配时检查的字段,以确保它们永远不会为0或null或者您想要防范的任何内容等.

    默认和关键字参数.在Java中,如果您想要一个最多可以包含5个可选参数的构造函数,则必须定义该构造函数的6个不同版本.而且根本没有办法说Student(name="Eli", age=25)

    函数只能返回1个东西.在Python中你有元组赋值,所以你可以说,spam, eggs = nee()但是在Java中你需要求助于可变输出参数或者有一个包含2个字段的自定义类,然后有两行额外的代码来提取这些字段.

    列表和词典的内置语法.

    运算符重载.

    通常设计更好的库.例如,要用Java解析XML文档,你会说
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("test.xml");
    ,用Python说
    doc = parse("test.xml")

无论如何,我可以继续使用更多示例,但Python总体上是一种更灵活和更具表现力的语言.它也是动态类型的,我真的很喜欢,但它有一些缺点.

Java具有比Python更好的性能,并且具有更好的工具支持.有时这些事情很重要,而Java是比Python更好的语言来执行任务; 我继续使用Java进行一些新项目,尽管他们更喜欢Python.但作为一种语言,我认为Python对于我发现自己需要完成的大多数事情都是优越的.


不要忘记生成器/协同程序,这使得编写迭代器(和模拟)变得更加容易.

2> dF...:

我认为Philip J. Eby撰写的这篇文章在讨论两种语言之间的差异方面做得很好(主要是关于哲学/心态而不是特定的语言特征).

Python不是Java

Java也不是Python



3> Dave Webb..:

Python中的一个关键区别是重要的空白.这让很多人离开了我很长一段时间 - 但是一旦你开始它似乎自然而且比;任何地方都更有意义.

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

没有选中的例外情况

可选参数

更少的样板和更少的冗长一般

除此之外,Python Wiki上的这个页面是一个很好看的地方,有很多链接到有趣的文章.


“没有检查异常”绝对不是一个改进。我想知道什么地方可能出问题,而不必猜测一些情况并希望仅此而已。
好吧,C#来自Java之后,他们不加试验.采访了A. Heisenberg(?)及其背后的理由.但我认为他基本上说检查过的异常在纸面上看起来很好,并且在实践中很痛苦
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有