一日一技:你一定经常写出来的冗余代码
【摘要】 有一些同学是从其它语言迁移到Python的,所以写Python代码的时候,还带有其它语言的一些语法特征。于是写出来的Python代码包含了大量没什么用的无效代码。我们今天来看看常见的无效代码有哪些。
有一些同学是从其它语言迁移到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)
大家也可以在评论区说说你知道的其它冗余写法。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)