一日一技:你的代码是如何被炫技毁掉的

简介: 一日一技:你的代码是如何被炫技毁掉的

你的代码是如何被炫技毁掉的?


假设有这样一个例子:


一个函数接收两个参数,第一个参数为一个字典,第二个参数为一个列表,我们要把列表中的每一个元素去查字典,如果能够查询到,那么就获取值,如果不能查询到,就跳过。


例如:


输入:{'a': 1, 'b': 2, 'c': 3}['a', 'd', 'c'],那么打印:


a=1
c=3


我们可能会这样写代码:


def referer_dict(target, keys):
    for k in keys:
        if k in target:
            print(f'{k}={target[k]}')


那么有没有可能把判断k是否在 target这个操作去掉呢?也可以:


def referer_dict(target, keys):
    for k in keys:
        values = target.get(k, None)
        values is None or print(f'{k}={target[k]}')


但这种写法实际上并没有节省代码行数,不如这样改:


def referer_dict(target, keys):
    for k in keys:
        k not in target or print(f'{k}={target[k]}')


接下来还可以继续优化成一行代码:


def referer_dict(target, keys):
    [print(f'{k}={target[k]}') for k in keys if k in target]



再这样魔改下去这个函数都可以去掉。总共只需要1行代码。但是这样炫技并不可取。代码可读性和可维护性比炫技重要一万倍。


第四种写法,纯粹就是为了凑出这个打印结果而强行使用了列表推导式,毫无可读性,别人接手这个代码也难以维护。


保持 Python 的自文档性,优秀的 Python 代码,本身就是最好的文档,连注释都不需要就能让人理解。


请关注微信公众号【未闻Code】获取更多精彩文章。


目录
相关文章
|
Go
腥风血雨中,这招救了我的代码!
腥风血雨中,这招救了我的代码!
65 0
|
Python
一日一技:你的代码是如何被炫技毁掉的
一日一技:你的代码是如何被炫技毁掉的
117 0
|
设计模式 移动开发 安全
与其硬啃“屎山”代码,不如用这六步有条不紊实现代码重构 李慧文
对大规模系统进行重构,如果一个人对着又臭又长的代码硬刚,即使花了大量的时间进行手工验证,最后仍然会有很多问题,特别是一些深路径及特殊场景下的问题。其实,大规模的系统级别重构时是有方法的。我们采访了 Thoughtworks 数字化转型与运营 资深咨询师黄俊彬(QCon+案例研习社讲师),请他来分享 MV*模式重构演进的方法和经验。
579 0
与其硬啃“屎山”代码,不如用这六步有条不紊实现代码重构 李慧文
|
程序员 C++ 知识图谱
卧槽!这些笑死人不偿命的代码,你见识过吗?
卧槽!这些笑死人不偿命的代码,你见识过吗?
172 0
卧槽!这些笑死人不偿命的代码,你见识过吗?
|
程序员
程序员十大常规内卷操作,你学废了吗?
现阶段内卷已经成为互联网行业的专有名词,在很多公司,内卷的程度则代表着员工的努力程度,本文尝试教授十招程序员内卷操作,学完过后,帮助你干啥啥不行,内卷第一名。
|
存储 程序员 C++
如果当初学习编程时能有人给我这些忠告该多好
Cecily Carver 是多伦多的一位程序媛,和 Jennie Faber 一起创办了一个游戏制作工作室。她喜欢歌剧、舞蹈和弹钢琴。Cecily 在这篇文章分享她在编程道路上的所感所想,给出很多值得思考的编程箴言以及一些思想误区,比如在你学习编程之前思考一下你的目标、编程不是什么神秘的东西、坚持比方法更重要等,可以让我们在编程路上少走一些弯路,从而有更多的时间学习技术让自己变的越来越强大。
233 0
|
前端开发 Java 索引
【程序媛晒83行代码】被代码耽误的吃货小姐姐,用代码终结选择困难症
采霜的83行代码来自,工作一忙有时候饭也顾不上吃,于是就顺手写一段终结选择困难症的代码,大家随意看看~
3782 0
|
前端开发 Java 程序员
【程序媛晒83行代码】认真工作的程序媛原来是这样,你想到了嘛?
据说认真工作的程序员魅力值加10,这段代码你能猜的出来嘛。
3160 0

热门文章

最新文章

下一篇
开通oss服务