突然看到好几篇文章,内容基本上是什么用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,又突然感觉没有大括号有点别扭。哼,男人。