一日一技:你一定经常写出来的冗余代码
2023-03-09 22:08:41 时间
有一些同学是从其它语言迁移到Python的,所以写Python代码的时候,还带有其它语言的一些语法特征。于是写出来的Python代码包含了大量没什么用的无效代码。我们今天来看看常见的无效代码有哪些。
先定义再复制
列表和字典是重灾区。有一些人在Python里面创建一个元素已经确定的列表,却这样写代码:
- a = list()
- a.append('x')
- a.append('y')
- a.append('z')
但实际上,你可以直接一行代码写为:
- a = ['x', 'y', 'z']
初始化一个元素已经确定的字典,有人也喜欢这样写代码:
- a = dict()
- a['name'] = 'kingname'
- a['age'] = 100
- a['address'] = 'xx'
但实际上,一行代码就可以搞定了:
- a = {'name': 'kingname', 'age': 100, 'address': 'xx'}
还有些人字典的Key存入列表,是这样写代码的:
- key_list = []
- for key in target_dict.keys():
- key_list.append(key)
但实际上,一行代码就搞定了:
- key_list = list(target_dict)
条件判断真、假、是否为空
有些人在写条件判断的时候,是这样写的:
- if a == False:
- print('xx')
- if a == []:
- print('xx')
- if a == '':
- print('xx')
- if a == None:
- print('xx')
- if a == 0:
- print('xx')
但实际上,这些判断全部可以合并成一个:
- if not a:
- print('xx')
同理,对于判断真、非空、非零的代码:
- if a == True
- if len(a) > 0
- if a != 0
- if a != None
全部都可以合并成:
- if a:
- print('xxx')
稍稍有点技术含量的冗余
有些人在写条件判断的分支检测的时候,是这样写的:
- for ele in target_list:
- if ele > 0:
- print('列表中至少有一个数字大于0')
- return True
- else:
- continue
这里的else: continue实际上没有任何作用,完全可以删除:
- for ele in target_list:
- if ele > 0:
- print('列表中至少有一个数字大于0')
- return True
列表推导式式我们经常使用的一种语法糖。但Python里面,其实还有一个生成器推到式,它写为(x for x in yyy),这里使用小括号。所以对于下面这几行代码:
- a = ['1', '2', '3']
- sum_result = sum([int(x) for x in a])
知道生成器推到式的同学可能会这样写:
- a = ['1', '2', '3']
- sum_result = sum((int(x) for x in a))
但实际上,如果一个生成器推到式作为另一个函数的唯一参数,那么可以省略内层括号:
- a = ['1', '2', '3']
- sum_result = sum(int(x) for x in a)
大家也可以在评论区说说你知道的其它冗余写法。
本文转载自微信公众号「未闻Code」,可以通过以下二维码关注。转载本文请联系未闻Code公众号。
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的