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

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

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


假设有这样一个例子:


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


例如:


输入:{'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】获取更多精彩文章。


目录
相关文章
|
JSON 前端开发 Java
【十八】springboot实现自定义全局异常处理
【十八】springboot实现自定义全局异常处理
389 2
【十八】springboot实现自定义全局异常处理
|
数据可视化 Linux API
使用Docker安装部署Swagger Editor并远程访问编辑API文档
使用Docker安装部署Swagger Editor并远程访问编辑API文档
299 0
|
存储 SQL 机器学习/深度学习
阿里云数加大数据计算服务MaxCompute学习路线图:从入门到精通
将所学知识应用于实际工作中并不断进行实践和创新是提升技术能力的关键所在。用户可以结合业务需求和技术发展趋势积极探索新的应用场景和解决方案,并在实践中不断总结经验和教训以提升自己的技术水平和实践能力。
|
11月前
|
数据安全/隐私保护
github报错(完美解决):获取token。remote: Support for password authentication was removed on August 13, 2021.
这篇文章介绍了如何在GitHub上解决因密码认证被移除而导致的推送错误,通过创建和使用个人访问令牌(token)来代替密码进行身份验证。
2524 0
|
网络协议 安全 网络架构
|
应用服务中间件 nginx Docker
docker搭建在线Markdown服务器
通过以上步骤,你就可以使用Docker搭建一个简单的在线Markdown服务器,方便浏览和编辑Markdown文件。注意,此方法适用于快速部署,如果需要更多高级功能,可以考虑使用专门的Markdown服务软件。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
407 0
|
Java 关系型数据库 MySQL
springboot+mybatis-plus实例demo
springboot+mybatis-plus实例demo
|
jenkins 持续交付 开发工具
|
Java 自然语言处理 索引
【Java学习笔记之十八】Javadoc注释的用法
Javadoc注释的用法 Java 文档// 注释一行/* ...... */ 注释若干行/** ...... */ 注释若干行,并写入 javadoc 文档通常这种注释的多行写法如下:/*** .........* .........*/javadoc -d 文档存放目录 -author -version 源文件名.java这条命令编译一个名为"源文件名.java"的 java 源文件,并将生成的文档存放在"文档存放目录"指定的目录下,生成的文档中 index.html 就是文档的首页。
2840 0