专栏首页烟草的香味Python可以减少代码量?我不信

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,又突然感觉没有大括号有点别扭。哼,男人。

本文分享自微信公众号 - 烟草的香味(hujing-bc),作者:胡靖哥哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 23种设计模式之命令模式

    定义: 将一个请求封装成一个对象, 从而让你使用不同的请求将客户端参数化, 对请求排队或者记录请求日志, 可以提供命令的撤销和恢复功能

    烟草的香味
  • 浮点数的运算精度丢失

    1/5,使用小数表示为0.2,但是1/3,使用小数表示就是一个无限循环小数:0.3333333, 也就是说,分数的 1/3+1/3=2/3,但如果使用小数:0....

    烟草的香味
  • 网络带宽是什么

    最近有盆友在购买云服务器,问我带宽选多大的比较合适?当时我说,就你这小网站,整个1M妥妥的。

    烟草的香味
  • 死磕 java集合之WeakHashMap源码分析

    WeakHashMap是一种弱引用map,内部的key会存储为弱引用,当jvm gc的时候,如果这些key没有强引用存在的话,会被gc回收掉,下一次当我们操作m...

    彤哥
  • Python学习没有捷径,但可以加速

    针对生信领域的零基础爱好者及生信分析中遇到的种种问题,生信领域知名公众号“生信宝典”团队组织了中科院系统项目经验丰富的一线科研人员开展系列培训活动。本期零基础P...

    生信宝典
  • 如何在 CentOS 7 上安装 Couchdb

    Apache CouchDB 是一个由 Apache 软件基金会开发的免费并且开源的 NoSQL 数据库。

    雪梦科技
  • Android开发笔记(八十一)屏幕规格适配

    适配各种屏幕规格,首先要取到系统对于屏幕的配置信息,这些配置可从工具类Configuration获得。Configuration对象在Activity中通过...

    用户4464237
  • 2018最新款渗透测试框架 | Fsociety搞定各种姿势脚本

    Fsociety是一款最新的渗透测试框架,可以帮助各位兄弟在安全测试过程中拥有变身成黑客所需要的各种姿势脚本。 这个工具刚刚出现,目前大概分为以下9类,后续还会...

    FB客服
  • 高通开测无人驾驶汽车,采用360度非视线感知能力芯片

    无人驾驶在以前只能出现在科幻片里,但随着人工智能在这几年的迅速发展,无人驾驶已经不再只有电影里面才可以看得到了。 经过无数开发者的实验与测试,无人驾驶汽车也终于...

    企鹅号小编
  • 详解Early Lock Release

    提示:公众号展示代码会自动折行,建议横屏阅读 Early Lock Release 的原理 ---- 数据库领域存在很多优化措施(例如 group commi...

    腾讯数据库技术

扫码关注云+社区

领取腾讯云代金券