9 回答
![?](http://img1.sycdn.imooc.com/545863b500014e4602200220-100-100.jpg)
TA贡献1995条经验 获得超2个赞
是触类旁通还是误入歧途其实就在一念之间
触类旁通的人往往懂得总结、归纳,懂得思考和探索背后的东西
误入歧途的人往往觉得“唉他们差不多嘛”,然后试图把A上的经验套在B上,不是在学B,而是学怎么把B当A用
最后,请务必习惯独立思考、独立学习,不要“上课教XXX”,“课上的YYY我成绩不错”,“这样学ZZZ对不对”。还有既然你python还没学透,那么无论学Java对学python再有启发再有帮助,效果也不及直接学Python的万分之一。在我看来你就是还不够想学python,如果你其实不想学,只是很肤浅的被某种因素推去学一样东西,那你可能很难把它学好
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
TA贡献1805条经验 获得超9个赞
我是先学Java(03年开始,十几年写了无数代码),然后再学的Python(2012开始),刚开始写出来的Python就像Java,完全没有掌握Pythonic的神髓,直到最近半年才有点找到门道,说明精通Java反而有可能成为你的绊脚石。
我个人的体会
两类语言不太一样,虽然都是支持面向对象的,但是Java是静态语言,类结构是预先设计好的固定的,而Python是动态类型的,更多的倾向于使用鸭子类型(Duck Type),这点上的不同,要写很多(10w+)才能有真正体会。
Python函数和变量一样,可以当做值传来传去,于是Java里面很高大上的aop、cglib、动态代理、配置一堆的东西,被Python几行代码就能替代。Java里面常用的设计模式,比如策略、责任链模式之类的,在Python也就是传递函数就好了,根本不用预先定义接口。可以说用了动态语言,设计模式这本书要重写了。
另外Python有些函数式的东西,map reduce filter lambda,这个Java8才开始有(个人认为Java8有点成为和以往不同的Java语言了)。
Python有特别好用的list comprehension,特别喜欢用list comprehension解析json之类,使用Java,就是很死板的语法了,一大堆异常、空值要处理,烦。
最近在继续研究Python的一些generator、yield之类的,感觉这个和Java的util.concurrent的Future是解决同一个问题的不同思路,细节正在比较。
总而言之多学语言有好处,但是不是去学Java、C#、C++这样很相近的从一个根派生出来的语言
建议楼主学习一下不同范式的语言,命令式、函数式...甚至同样的面向对象语言,也有继承和原型两种范式(Java、Javascript),这些范式对更好的运用当前的语言会够很大的帮助,我个人觉得学Python太晚了,吃亏了。我现在还在努力学习入门Clojure。希望对你有帮助。
添加回答
举报