当前位置: 首页 > 科技观察

每天一技能:你肯定经常写冗余代码

时间:2023-03-19 21:30:20 科技观察

有些同学是从其他语言迁移到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']=100a['address']='xx'但其实一行代码可以这样做:a={'name':'kingname','age':100,'address':'xx'}也有人把字典的key存到list里面,写代码像this:key_list=[]forkeyintarget_dict.keys():key_list.append(key)但其实一行代码就够了:key_list=list(target_dict)判断真假空的条件有人写条件判断像这样:ifa==False:print('xx')ifa==[]:print('xx')ifa=='':print('xx')ifa==None:print('xx')ifa==0:print('xx')但其实这些判断都可以合二为一:ifnota:Print('xx')也是一样的,对于判断真、非空、非-的代码zero:ifa==Trueiflen(a)>0ifa!=0ifa!=None都可以组合成:ifa:print('xxx')略有技术冗余有些人在写条件判断的分支检测时是这样写的:foreleintarget_list:ifele>0:print('列表中至少有一个数大于0')returnTrueelse:continueelse这里:continue其实没有任何作用,完全可以删除:foreleintarget_list:ifele>0:print('至少有一个numberinthelistgreaterthan0')returnTruelistcomprehension是我们经常使用的一种语法糖。但是在Python中,其实有一个generatorpushformula,写成(xforxinyyy),这里用了括号。所以对于下面这几行代码:a=['1','2','3']sum_result=sum([int(x)forxina])知道generatorpush类型的同学可能会这样写:a=['1','2','3']sum_result=sum((int(x)forxina))但实际上如果把一个生成器推到公式中作为另一个函数的唯一参数,那么内括号就可以了省略:a=['1','2','3']sum_result=sum(int(x)forxina)大家也可以在评论区说说自己知道的其他冗余写法。本文转载自微信公众号“闻所未闻的密码”,可通过以下二维码关注。转载本文请联系Code公众号。