如何让python代码更高效灵活
前言 : Python很强大,毋庸置疑,魅力无限,掌握起来不像看起来那么容易,在你初步了解了python的语言特性和基本语法以后,让我们深入探讨一下关于代码的高效性和可优化型的问题,如果程序员对于python的特性没有足够的了解,在未来开发中将会遇到严重的问题,开发一款软件,不等于开发一款优秀的软件。
python开发者用pythonic来形容python风格的代码,这是世界上广大开发者形成的习惯,协作性更强,虽然语言风格每个人都有所不同,但是有的思路并不是那么的简洁而高效.
1 . PEP8
全称:,针对python代码风格编订的指南,虽然我们平时的语法只要是对的,就可以编写出想要的效果,但是如果遵循一样的风格来编写,可以增加代码可读性,以下一部分内容针对PEP8的细节进行解析和描述,希望大家完整的阅读下这份编码指南:
使用空格表示缩进:在python中没有像c语言像java一样使用括号来进行函数变量等的区域限制,而是使用了缩进,通常人会用[tab]制表符来表示缩进,实际上在PEP 8中,并不提倡用tab表示缩进,因为tab在不同的编辑器中所呈现的不一样,五花八门,对于需要共享编辑的团队型项目而言,一个tab会是灾难性的存在,所以不提倡用[tab]进行缩进,尽管他很方便.
语法中每一层缩进使用四个空格 : python的缩进功能可以有效防止代码的堆积 .
每行字符数目不超过79 .
类文件中函数和类之间应该相隔两个空行 .
获取list元素时候,或者赋值的时候,切莫在两端加上无谓的空格 .
为变量赋值时候 : a = 3而尽量不要 : a=3 .
函数变量与属性之间尽量用下划线连接,清晰可见 : function_int
类文件中的实例,第一个参数应该是本身,也就是(self)
一般检测list是否为空,初学者用的是len(list) == 0 , 实际上python中并不提倡类似的做法而使用if not somelist
2. 从list的切片(slice)说起
python中的list类似于c语言中的数组,并且对于数组有着更高的灵活性,在python中应用广泛,python对于list的函数有很多,使用方法更是灵活多变,其可以说是使用最多的python元素了,以下是来自谷歌公司对于list中的切片(slice)规范的一些特点 :
切割的规定文件格式是 : list[start:end],前面的start的元素在切割后的切片(slice)里面,而不同的是end所指向的元素并不在切片(slice)中
如果切片(slice)从第一个元素开始,也就是0下标开始,那么一般我们在写的时候不必将其写出 , list[:7] 而不提倡 list[0:7] 留空的代码更易于直观理解,同样道理,不提倡在尾部写上最后的len(list) .
在由list尾部向前遍历的时候可以使用负值表示偏移数目 .
在python中使用上例中的start 与 end切割列表即使越界也不会有大问题,但是在遍历元素时候,如果越界,会导致异常 : list index out of range .
list[-0:]会成为对原list的复制 .
在list切片(slice)操作中如果两个长度不同,依然可以进行操作例如 : list[a,b,c,d,e,f,g,h] --- list[2:6] = [1,2,3] --- list会变成[a,b,1,2,3,g,h]
除了start 和 end 的操作,python还提供了list[start:end:stride],得到特殊的切片(slice) , 比如 : list[::2]就是从头开始步长为2取出元素.官方文档中提供了详细的说明.这里我们不再赘述 .
以上的切割方法,会在内存中留下一份数据浅层拷贝 , 如果你不希望浪费这些内存,那就需要用到python中的itertools模块 .
注:本文部分文字和图片来源于网络,如有侵权,请联系删除。版权归原作者所有!此页面下方声明无效!
猜你喜欢LIKE
相关推荐HOT
Python打印出变量
我们现在要键入更多的变量并且把它们打印出来。这次我们将使用一个叫“格式化字符串 (format string)”的东西. 每一次你使用 " 把一些文本引用...详情>>
2022-11-07 10:37:00Python中的可变对象与不可变对象
总结:对象可以分为 可变对象和不可变对象 可变对象:该对象所指向的内存中的值是可以被改变的,如:String、Tuple、Number。不可变对象:该对...详情>>
2022-11-07 10:26:00Python 2的结束意味着什么
Python 2的官方错误修复和安全补丁将停止更新。核心开发团队将不会修复Python 2解释器或Python 2标准库中新发现的问题。但是企业供应商仍可以自...详情>>
2022-11-07 10:24:00django扩展user用户字段inlines方式?
User为Django自带User表,需要关联详细信息表,类为UserBaseMsg(表名为user_base_msg)和另外一张表的员工状态信息,类为UserWorkMsg(表名为user...详情>>
2022-11-07 10:23:24