我的大部分编程背景都是用Java编写的,而且我仍然在用Java进行大部分编程。但是,我已经开始为一些工作中的附带项目学习Python,我希望尽可能地独立于我的Java背景来学习它--也就是说,我不想仅仅用Python编写Java程序。我该注意什么?
一个快速的例子--在查看Python教程时,我发现一个函数的默认可变参数(例如list)是持久化的(从调用到调用都会记住)。作为一个Java程序员,这违反了我的直觉,也很难让我头脑清醒。(如果您不了解示例,请参阅这里和这里。)
有人还向我提供了这列表,我觉得这很有帮助,但很短。有谁有其他例子说明Java程序员可能会误用Python.?或者是Java程序员会错误地假设或有困难理解的东西?
编辑:好的,简要概述我为防止答案重复而链接的文章中提到的原因(如蜥蜴比尔的建议)。(请告诉我,如果我在措辞上出错了,我只是刚刚开始使用Python,所以我可能不完全理解所有的概念。还有一个免责声明--这将是非常简短的,所以如果你不明白它得到了什么,请查看链接。)
(如果你觉得这个问题很有趣,那就看看这个链接吧。()相当不错。)
发布于 2010-02-26 04:00:26
就这么做吧:
class Dog(object):
def make_sound(self):
return "woof!"
class Cat(object):
def make_sound(self):
return "meow!"
class LolCat(object):
def make_sound(self):
return "i can has cheezburger?"发布于 2010-02-26 11:35:35
引用的文章有一些很好的建议,很容易被错误引用和误解。还有一些不好的建议。
把Java抛在后面。重新开始。“不要相信你基于Java的本能”。说事情是“违反直觉的”是任何编程学科的坏习惯。当学习一门新的语言时,重新开始,并放弃你的习惯。你的直觉一定是错的。
语言是不同的。否则,它们将是同一种语言,有不同的语法,也会有简单的翻译器。因为没有简单的翻译,所以没有简单的映射。这意味着直觉是没有帮助和危险的。
switch语句可以通过多种方式实现。首先,也是最重要的,它通常是一个if elif elif elif结构。这篇文章在这方面毫无帮助。如果您完全确定这太慢(并且可以证明这一点),您可以使用Python字典作为从值到代码块的更快的映射。盲目地把翻译成字典(不加思考)是非常糟糕的建议。发布于 2010-02-26 04:51:05
在Java中,您可能习惯于在Python中找不到的一件事是严格的隐私。这与其说是值得注意的东西,不如说是不需要寻找的东西(我开始寻找相当于‘私有’的Python的时间让我感到尴尬!)相反,Python比Java具有更高的透明度和更容易的内省。这属于有时被称为“我们在这里都是同意的成年人”的哲学范畴。有一些约定和语言机制可以帮助防止意外使用"unpublic“方法等等,但是Python中几乎没有信息隐藏的整体思想。
https://stackoverflow.com/questions/2339371
复制相似问题