由 Java 转向 Python,思维方式与思路应该有哪些方面的转变?

2016-01-17 11:56:07 +08:00
 hellogbk

以前写过一段时间的 Java ,现在需要转向 Python 。利用一些时间掌握了一些 Python 的基本语法,接下来需要花一段时间来了解一下常用的 API 。但我觉得更重要的应该是编程思维方式的转变,否则的话完全就相当于是只是重新学了一套 API 与类库的运用方式而已。

V 友众多,肯定有不少前辈也是从 Java 转向 Python ,请问各位前辈能否提供一些经验,由 Java 向 Python 转的时候,哪些编程方面的思路与思维方式需要转变,来写出真正的 Python 代码?

谢谢各位!!

4525 次点击
所在节点    程序员
22 条回复
qqblog
2016-01-17 12:18:41 +08:00
function is first-class object
sivacohan
2016-01-17 12:23:54 +08:00
import 机制好好看看, Java 里正常到 Python 就是循环引用
基于 module 的 Singleton 看一下。 Python 里实现单例最简单的办法。
看一下 monkey patch 。这东西写框架比较有用。
sivacohan
2016-01-17 12:27:07 +08:00
另外,语言的转换要找个理由。在 Java 中表达力受到了什么限制。希望在 Python 中获得什么。别的就没什么了。
一般来说 Java 换 Python 会经历如下几个过程:
1, 这尼玛也报错?
2, 不错,比 Java 简洁多了
3, 这货咋这么慢,算了,还是用 Java 写这个吧
mengzhuo
2016-01-17 12:28:42 +08:00
最重要的难道不是列式推到和啥都是对象么?
congeec
2016-01-17 12:28:49 +08:00
我不怎么用 java ,不过我知道 idiomatic python 相关的你一定得看看
luikore
2016-01-17 14:08:26 +08:00
忘记设计模式和依赖注入

不要想一个东西是什么类型, 想它能做什么

free form 编辑器比做选择题的 IDE 更有生产力
jukka
2016-01-17 14:13:08 +08:00
forget OOP
233
2016-01-17 14:35:51 +08:00
有本书叫 <dive into python>?好像这名字。
书本身争议比较大,但讲解方法的确是和 java 一类语言对比着讲的
hbkdsm
2016-01-17 14:44:13 +08:00
@luikore 请问从 JavaScript 转向 Ruby ,思维方式与思路应该有哪些方面的转变?
lcqtdwj
2016-01-17 16:28:56 +08:00
鸭子类型
funky
2016-01-17 17:03:39 +08:00
鸭子辩型
mringg
2016-01-17 17:05:48 +08:00
感觉没啥太大的区别
wizardoz
2016-01-17 17:29:21 +08:00
从强类型到动态类型,一些本来需要定义几个类来实现的设计模式不再需要了。
GNiux
2016-01-17 17:32:50 +08:00
@233 刚下了它这 04 年的版本, python 2 ,不知有没更新跟进……
wizardforcel
2016-01-17 18:14:31 +08:00
为什么要写出真正的 python 代码?和语言绑定太死的话迁移困难。
Ouyangan
2016-01-17 19:08:32 +08:00
实践出真知 ,工作 java 业余看看 go ,共勉之
wizardforcel
2016-01-17 19:17:41 +08:00
@wizardoz 准确的说是一部分接口不需要了。反正访问属性都是动态查找的。
233
2016-01-17 20:29:28 +08:00
@GNiux 应该够呛,这本书并不受推崇,我也是喜欢和其他语言对比着看才选择的这个
Owenjia
2016-01-18 01:28:06 +08:00
@GNiux
@233
Dive Into Python 3 还是有的。 http://www.diveintopython3.net/
skyworker
2016-01-18 10:06:25 +08:00
@sivacohan “慢”其实不是问题,目前大部分应用的瓶颈其实在数据库里面。

SQL 查询需要 400ms , java 循环需要 40ms;

SQL 查询需要 400ms , python 循环需要 80ms;

440ms 和 480ms 差别很大吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251323

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX