V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hellogbk
V2EX  ›  程序员

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

  •  2
     
  •   hellogbk · 2016-01-17 11:56:07 +08:00 · 4497 次点击
    这是一个创建于 3008 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    谢谢各位!!

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

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

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

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

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

    440ms 和 480ms 差别很大吗?
    skyworker
        21
    skyworker  
       2016-01-18 10:07:57 +08:00
    @sivacohan 当然,你纯跑一个不涉及 sql 操作的 1w 遍的 benchmark , java 和 python 差别很大;但是生产系统上的瓶颈大部分都在 sql 上
    tanywei
        22
    tanywei  
       2016-01-18 14:37:06 +08:00
    凡事不先写 Class
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   914 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:44 · PVG 06:44 · LAX 15:44 · JFK 18:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.