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

网友投稿 686 2022-05-29

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

假设有这样一个例子:

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

例如:

输入:{'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 代码,本身就是最好的文档,连注释都不需要就能让人理解。

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

Python

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python编程:loguru管理日志输出
下一篇:uni-app 实现应用桌面图标角标提示及应用跳转
相关文章