首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python中期学者必看:让你的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模块 .

关于list的操作今天先介绍到这,明天将与大家探讨关于map函数和filter过滤器的列表实现 . 如何不用这两个内置函数而达到同样的效果 .

刚创了个新QQ群:685012311

欢迎大家进来交流,一起进步 !

每天不断的干货 , 助你成长 .

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180219G0OJSZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券