zoukankan      html  css  js  c++  java
  • Python可以减少代码量?我不信

    突然看到好几篇文章,内容基本上是什么用Java需要100行,用PHP只需要30行,用Python只需要10行(数字记不清了)。简单说一下我的看法。

    我不服,凭啥都是编程语言,你行我就不行?

    我记不清当时给出的支持Python可以少写代码的栗子具体是什么了,它给出的是实现了某个功能,两行搞定,一行引入,一行调用。

    当时看的我一脸懵逼,哇,真的耶。只用一行就可以。但稍后一想,这也太扯了吧。你看着貌似是只调用了一行代码,但里边具体的实现不还是有的么?代码量并没有减少,只不过是搬到了你看不到的地方,假象罢了。

    当然,我是支持用Python可以少写代码的,但并不是刚才说的那样。

    在我看来,这个问题得从语法层面来说,只有语法支持,才算真的能够减少代码量。其实各个语言都有其特定的语法。就像PHP中变量直接当函数用,直接当类用,连反射都不用了。

    举个栗子就是大家都熟悉的lambda。现在有一个需求,要接收外部穿进来的函数。给出不同语言的实现

    Java版本

    // 因为Java中一切都是对象,所以尽管提供了lambda的支持,但并不能直接调用函数,而是以接口的形式调用
    interface MathTest {
        int add(int a, int b);
    }
    // 接收lambda的函数
    void dispose(MathTest mt){
        int v = mt.add(1, 3);
    }
    // 调用函数的地方
    dispose((x, y) -> x + y)

    因为Java一切皆是对象,lambda其实就是一个匿名内部类。

    PHP版本

    // 接收函数
    function dispose($fun){
        $v = $fun(1, 3);
    }
    // 调用的地方
    dispose(function($a, $b){
        return $a + $b;
    });

    PHP可以直接传函数,已经很方便的,但是不支持lambda,还是需要正儿八经的写个函数传过去。

    Python版本

    def dispose(fun):
        v = fun(1, 3)
    dispose(lambda x, y: x+y)
    Python既可以直接传函数,又支持lambda表达式。

    当然,还有一些其他的语法,是可以稍稍体现一哈Python的独到之处的。嘿嘿

    简单罗列了一些Python的语法支持,确实是不用写过多代码就能实现相关功能。

    元素交换

    a,b = b,a

    实现两个元素值的交换,无需临时变量。

    数组生成

    list = [x for x in range(20) if x%2 == 0]

    生成偶数列表,这个一行搞定,舒服。

    列表切片

    list[1:4]

    对列表的各种切片操作。


    其实,Python最大的特点就是,他没有大括号。刚开始从Java到Python时,看着没有大括号的程序,很顺眼。但现在用了一段时间的PHP,又突然感觉没有大括号有点别扭。哼,男人。

  • 相关阅读:
    【shell】两种字符串提取场景的实现
    【batch】批处理文件多参数处理和for循环字符串连接
    【Java】「深入理解Java虚拟机」学习笔记(4)- 类文件结构
    【Java】「深入理解Java虚拟机」学习笔记(2)- JVM内存区域
    【Java】「深入理解Java虚拟机」学习笔记(1)
    【Myeclipse】用Myeclipse10.5搭建C/C++开发环境
    【JDK】JDK模块化(1)-为什么要模块化
    【DOS】文件统计命令
    【java】转:Windows系统下面多个jdk版本切换
    【Web】servlet、filter和listener
  • 原文地址:https://www.cnblogs.com/hujingnb/p/12129405.html
Copyright © 2011-2022 走看看