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

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

[[398599]]

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

先定义再复制

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

  1. a = list() 
  2. a.append('x'
  3. a.append('y'
  4. a.append('z'

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

  1. a = ['x''y''z'

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

  1. a = dict() 
  2. a['name'] = 'kingname' 
  3. a['age'] = 100 
  4. a['address'] = 'xx' 

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

  1. a = {'name''kingname''age': 100, 'address''xx'

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

  1. key_list = [] 
  2. for key in target_dict.keys(): 
  3.     key_list.append(key

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

  1. key_list = list(target_dict) 

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

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

  1. if a == False
  2.     print('xx'
  3. if a == []: 
  4.     print('xx'
  5. if a == ''
  6.     print('xx'
  7. if a == None: 
  8.     print('xx'
  9. if a == 0: 
  10.     print('xx'

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

  1. if not a: 
  2.     print('xx'

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

  1. if a == True 
  2. if len(a) > 0 
  3. if a != 0 
  4. if a != None 

全部都可以合并成:

  1. if a: 
  2.     print('xxx'

稍稍有点技术含量的冗余

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

  1. for ele in target_list: 
  2.     if ele > 0: 
  3.         print('列表中至少有一个数字大于0'
  4.         return True 
  5.     else
  6.         continue 

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

  1. for ele in target_list: 
  2.     if ele > 0: 
  3.         print('列表中至少有一个数字大于0'
  4.         return True 

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

  1. a = ['1''2''3'
  2. sum_result = sum([int(x) for x in a]) 

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

  1. a = ['1''2''3'
  2. sum_result = sum((int(x) for x in a)) 

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

  1. a = ['1''2''3'
  2. sum_result = sum(int(x) for x in a) 

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

本文转载自微信公众号「未闻Code」,可以通过以下二维码关注。转载本文请联系未闻Code公众号。

 

责任编辑:武晓燕 来源: 未闻Code
相关推荐

2021-04-27 22:15:02

Selenium浏览器爬虫

2023-10-29 09:16:49

代码安全命令

2021-10-15 21:08:31

PandasExcel对象

2021-04-05 14:47:55

Python多线程事件监控

2022-06-28 09:31:44

LinuxmacOS系统

2022-03-12 20:38:14

网页Python测试

2021-11-12 05:00:43

装饰器代码功能

2021-03-18 23:28:45

Python反斜杠字符串

2021-04-12 21:19:01

PythonMakefile项目

2021-03-12 21:19:15

Python链式调用

2021-09-13 20:38:47

Python链式调用

2023-10-28 12:14:35

爬虫JavaScriptObject

2021-04-19 23:29:44

MakefilemacOSLinux

2021-02-14 22:22:18

格式图片 HTTP

2021-10-20 20:02:47

字符变量函数

2021-05-08 19:33:51

移除字符零宽

2021-07-27 21:32:57

Python 延迟调用

2021-10-03 20:08:29

HTTP2Scrapy

2022-03-07 09:14:04

Selenium鼠标元素

2020-12-11 06:30:00

工具分组DataFrame
点赞
收藏

51CTO技术栈公众号