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

生活的乐趣属于敢闯敢为的开拓者,而非空想不做的看客。
以下内容为个人学习“廖雪峰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等不属于迭代器。因此,可迭代不一定是迭代器,迭代器一定可迭代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值