温故知新python3--基础知识3(函数高级特性)

来源:互联网 发布:php什么是单列模式 编辑:程序博客网 时间:2024/06/06 02:13

生活的乐趣属于敢闯敢为的开拓者,而非空想不做的看客。
以下内容为个人学习“廖雪峰python3教程”的学习笔记。
参考网站:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
利用python3中的高级特性,可以减少代码量,提高开发速率。
常见的高级特性有:
1)针对list和str的slice(切片)操作:类似于matlab语言,举个例子,L[:3]可以得到前三个成员。
2)迭代:只要是可以迭代的对象,不管有无下标,都可以使用for… in…格式来访问其所有成员。其中dict的访问比较特殊:A)访问dict的key:for key in dict;B)访问dict的value:for value in dict.values( );C)同时得到dict中的key和value:for key, value in dict.items( )。 可以看出,迭代时,迭代量可以不止一个。 此外字符串中的每一个字符也可以用迭代的方式访问。
3)列表生成式:“[变量或包含变量的表达式 操作1 操作2]”生成操作1、2指定的列表。比如:

>>> [m + n for m in 'ABC' for n in 'XYZ']['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

4)生成器:列表生成式的好处在于初始化列表时操作极其简单,但是对于如斐波拉契数列之类的无穷数列,无法用列表生成式生成,同时,如果生成了包含大量成员的列表,将极大地占用内存空间。为了规避这两个缺点,引入了generator(生成器)。
生成器:用于储存初始化成员的算法,其初始化的方法与列表类似,但是使用的符号是圆弧括号( )而非方括号[ ],可以使用next(generator)访问generator的下一个成员,或者直接使用for遍历其所有成员。
如:

>>>g = ( n*n for n in range(100))>>>g<generator object <genexpr> at 0x03A265A0>

可以看出generator并不是储存每一个成员,而是储存算法,在被调用时再计算出成员的数值。
yield与return的区别:
函数执行到return时,返回return后的内容,下次被调用时仍然从头开始执行函数。
函数执行到yield时,返回yield后的内容,下次被调用时,从上次执行完的yield语句的下一句继续执行。
python3”异常“语法:

try:    代码块except 错误类型 as 变量:    错误类型处理

对代码块进行执行,如果出现错误,则将错误赋给变量,执行相关操作。
对可迭代对象,迭代到无法返回下一个值时,会抛出StopIteration的错误。

5)迭代器:可以被next( )函数调用并不断返回下一个值的对象称为迭代器,generator属于迭代器,list、set等不属于迭代器。因此,可迭代不一定是迭代器,迭代器一定可迭代。

原创粉丝点击