你所不知道的Python编程小技巧

你所不知道的Python编程小技巧

 

前言:Python官方教程的开头是这么写的“Python是一门既容易上手又强大的编程语言”。如果你是一个编程小白,你可能花个几天时间浏览一下官方文档就能写出能够使用的Python程序来,但是你写出的代码真的高效么?有可能你已经是一个代码高手了,当你使用Python的时候,你会觉得so easy!但是你总会按照你熟悉的编码的思路来写Python代码,这样你可能失去了解Python这些独有特性的机会。所以下面让我们一起来看看Python有哪些独特的编码小妙招吧~

                             Python列表切片

    在Python中有一个基本可以称得上万用的基本数据类型,那就是列表list了,我们可以在list中存储同样的数据类型,也可以存储不同的数据类型,还可以像处理队列一样对它进行读取、添加、删除、修改数据。

    除了上面所说的基础操作之外,我们可以像切一块长方形蛋糕一样,切取列表中的一部分数据,这种操作被称为切片。

在Python中切片的公式如下:

                                        list_name[start:stop:step]

    由start和stop来决定从列表中切取的的起始索引号,由step来决定步长(即接连获取数据,还是隔一个、隔两个获取数据)。当然截图的方向也由step确定,step为正时,从左往右切片,step为负时,从右往左切片。start和stop的正值代表列表下标,负值代表列表从左往右数起,倒数第几个数据。

    start和stop的空值分别代表列表的头尾的最后一个数据,至于start和stop空值的时候代表的是列表的头还是尾,由step的正负值决定,即由step确定列表切片的方向后决定。当step为正时,即代表从左往右切片,则start的空值代表左边的开头,stop的空值代表右边的结尾。当step为负值时,即代表从右往左切片,则start的空值代表右边的开头,stop的空值代表左边的结尾。

Python生成器

    通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

    如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间,在Python中,这种一边循环一边计算的机制,称为生成器:generator。

    生成器是一个特殊的程序,可以被用作控制循环的迭代行为,python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,而可以使用next()函数和send()函数恢复生成器。

    生成器类似于返回值为数组的一个函数,这个函数可以接受参数,可以被调用,但是,不同于一般的函数会一次性返回包括了所有数值的数组,生成器一次只能产生一个值,这样消耗的内存数量将大大减小,而且允许调用函数可以很快的处理前几个返回值,因此生成器看起来像是一个函数,但是表现得却像是迭代器。

例(使用生成器来实现斐波拉契数列):

你所不知道的Python编程小技巧_第1张图片

 

Python迭代器

    为什么list、dict、str等数据类型不是Iterator?Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。

    可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。

    Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。

    凡是可作用于for循环的对象都是Iterable类型;

    凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

    集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python修饰器

    在Python中函数可以作为参数传递给另一个函数。将其他函数作为参数的函数也称为高阶函数。高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

    函数调用前后添加修饰语句,但又不希望修改函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。本质上,修饰器就是一个返回函数的高阶函数。

    例:

你所不知道的Python编程小技巧_第2张图片


总结

如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。
 

你可能感兴趣的:(自动化测试,软件测试,Python编程小技巧,Python编程小技巧,Python列表切片,Python迭代器,Python生成器,软件测试)