前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一日一技:你一定经常写出来的冗余代码

一日一技:你一定经常写出来的冗余代码

作者头像
青南
发布2021-05-13 15:10:28
4850
发布2021-05-13 15:10:28
举报
文章被收录于专栏:未闻Code

摄影:产品经理

开胃小菜

有一些同学是从其它语言迁移到Python的,所以写Python代码的时候,还带有其它语言的一些语法特征。于是写出来的Python代码包含了大量没什么用的无效代码。我们今天来看看常见的无效代码有哪些。

先定义再复制

列表和字典是重灾区。有一些人在Python里面创建一个元素已经确定的列表,却这样写代码:

代码语言:javascript
复制
a = list()
a.append('x')
a.append('y')
a.append('z')

但实际上,你可以直接一行代码写为:

代码语言:javascript
复制
a = ['x', 'y', 'z']

初始化一个元素已经确定的字典,有人也喜欢这样写代码:

代码语言:javascript
复制
a = dict()
a['name'] = 'kingname'
a['age'] = 100
a['address'] = 'xx'

但实际上,一行代码就可以搞定了:

代码语言:javascript
复制
a = {'name': 'kingname', 'age': 100, 'address': 'xx'}

还有些人字典的Key存入列表,是这样写代码的:

代码语言:javascript
复制
key_list = []
for key in target_dict.keys():
    key_list.append(key)

但实际上,一行代码就搞定了:

代码语言:javascript
复制
key_list = list(target_dict)

条件判断真、假、是否为空

有些人在写条件判断的时候,是这样写的:

代码语言:javascript
复制
if a == False:
    print('xx')
if a == []:
    print('xx')
if a == '':
    print('xx')
if a == None:
    print('xx')
if a == 0:
    print('xx')

但实际上,这些判断全部可以合并成一个:

代码语言:javascript
复制
if not a:
    print('xx')

同理,对于判断真、非空、非零的代码:

代码语言:javascript
复制
if a == True
if len(a) > 0
if a != 0
if a != None

全部都可以合并成:

代码语言:javascript
复制
if a:
    print('xxx')

稍稍有点技术含量的冗余

有些人在写条件判断的分支检测的时候,是这样写的:

代码语言:javascript
复制
for ele in target_list:
    if ele > 0:
        print('列表中至少有一个数字大于0')
        return True
    else:
        continue

这里的else: continue实际上没有任何作用,完全可以删除:

代码语言:javascript
复制
for ele in target_list:
    if ele > 0:
        print('列表中至少有一个数字大于0')
        return True

列表推导式式我们经常使用的一种语法糖。但Python里面,其实还有一个生成器推到式,它写为(x for x in yyy),这里使用小括号。所以对于下面这几行代码:

代码语言:javascript
复制
a = ['1', '2', '3']
sum_result = sum([int(x) for x in a])

知道生成器推到式的同学可能会这样写:

代码语言:javascript
复制
a = ['1', '2', '3']
sum_result = sum((int(x) for x in a))

但实际上,如果一个生成器推到式作为另一个函数的唯一参数,那么可以省略内层括号:

代码语言:javascript
复制
a = ['1', '2', '3']
sum_result = sum(int(x) for x in a)

大家也可以在评论区说说你知道的其它冗余写法。

未闻 Code技术交流群开放啦!群里既有国内一二线大厂在职员工,也有国内外高校在读学生,既有十多年码龄的编程老鸟,也有中小学刚刚入门的新人,学习氛围良好!想入群的同学,请添加我的微信“mekingname”,备注“粉丝群”(谢绝广告党,非诚勿扰!)~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先定义再复制
  • 条件判断真、假、是否为空
  • 稍稍有点技术含量的冗余
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档