您的位置:首页 > 编程语言 > Python开发

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

2017-08-21 16:52 411 查看
生活的乐趣属于敢闯敢为的开拓者,而非空想不做的看客。

以下内容为个人学习“廖雪峰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等不属于迭代器。因此,可迭代不一定是迭代器,迭代器一定可迭代。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 函数