以前写过一段时间的 Java ,现在需要转向 Python 。利用一些时间掌握了一些 Python 的基本语法,接下来需要花一段时间来了解一下常用的 API 。但我觉得更重要的应该是编程思维方式的转变,否则的话完全就相当于是只是重新学了一套 API 与类库的运用方式而已。
V 友众多,肯定有不少前辈也是从 Java 转向 Python ,请问各位前辈能否提供一些经验,由 Java 向 Python 转的时候,哪些编程方面的思路与思维方式需要转变,来写出真正的 Python 代码?
谢谢各位!!
1
qqblog 2016-01-17 12:18:41 +08:00
function is first-class object
|
2
sivacohan 2016-01-17 12:23:54 +08:00 via Android
import 机制好好看看, Java 里正常到 Python 就是循环引用
基于 module 的 Singleton 看一下。 Python 里实现单例最简单的办法。 看一下 monkey patch 。这东西写框架比较有用。 |
3
sivacohan 2016-01-17 12:27:07 +08:00 via Android
另外,语言的转换要找个理由。在 Java 中表达力受到了什么限制。希望在 Python 中获得什么。别的就没什么了。
一般来说 Java 换 Python 会经历如下几个过程: 1, 这尼玛也报错? 2, 不错,比 Java 简洁多了 3, 这货咋这么慢,算了,还是用 Java 写这个吧 |
4
mengzhuo 2016-01-17 12:28:42 +08:00 via iPhone
最重要的难道不是列式推到和啥都是对象么?
|
5
congeec 2016-01-17 12:28:49 +08:00
我不怎么用 java ,不过我知道 idiomatic python 相关的你一定得看看
|
6
luikore 2016-01-17 14:08:26 +08:00
忘记设计模式和依赖注入
不要想一个东西是什么类型, 想它能做什么 free form 编辑器比做选择题的 IDE 更有生产力 |
7
jukka 2016-01-17 14:13:08 +08:00
forget OOP
|
8
233 2016-01-17 14:35:51 +08:00
有本书叫 <dive into python>?好像这名字。
书本身争议比较大,但讲解方法的确是和 java 一类语言对比着讲的 |
10
lcqtdwj 2016-01-17 16:28:56 +08:00
鸭子类型
|
11
funky 2016-01-17 17:03:39 +08:00
鸭子辩型
|
12
mringg 2016-01-17 17:05:48 +08:00 via Android
感觉没啥太大的区别
|
13
wizardoz 2016-01-17 17:29:21 +08:00
从强类型到动态类型,一些本来需要定义几个类来实现的设计模式不再需要了。
|
15
wizardforcel 2016-01-17 18:14:31 +08:00
为什么要写出真正的 python 代码?和语言绑定太死的话迁移困难。
|
16
Ouyangan 2016-01-17 19:08:32 +08:00
实践出真知 ,工作 java 业余看看 go ,共勉之
|
17
wizardforcel 2016-01-17 19:17:41 +08:00
@wizardoz 准确的说是一部分接口不需要了。反正访问属性都是动态查找的。
|
19
Owenjia 2016-01-18 01:28:06 +08:00
|
20
skyworker 2016-01-18 10:06:25 +08:00
@sivacohan “慢”其实不是问题,目前大部分应用的瓶颈其实在数据库里面。
SQL 查询需要 400ms , java 循环需要 40ms; SQL 查询需要 400ms , python 循环需要 80ms; 440ms 和 480ms 差别很大吗? |
21
skyworker 2016-01-18 10:07:57 +08:00
@sivacohan 当然,你纯跑一个不涉及 sql 操作的 1w 遍的 benchmark , java 和 python 差别很大;但是生产系统上的瓶颈大部分都在 sql 上
|
22
tanywei 2016-01-18 14:37:06 +08:00
凡事不先写 Class
|