defgetNum():for i inrange(5):yield i #注意当执行时遇到yield语句,就暂停该函数的执行。并将yield后面的值返回。
gnum = getNum()#生成器函数执行,会返回生成器对象。可迭代。for i inrange(6):print(next(gnum))# 注意,如果函数体执行完成,生成器的游标走到了末尾。会报StopIteration错误
9. yield from语法糖
从Python3.3开始增加了yield from语法.
yield from就是一种简化的语法糖
yield from iterable 等价于 for item in iterable : yield item
简单示例
defsol():for i in[1,2,3]:yield i
defsol2():#注意:sol2与sol效果等价yieldfrom[1,2,3]
iterab = sol()
iterab2 = sol2()print(next(iterab),next(iterab))print(next(iterab2),next(iterab2))
10. with…as语法(上下文管理)
上下文管理:一种特殊的语法,交给解释器去释放文件对象
使用with…as 关键字
上下文管理的语句块并不会开启新的作用域
with语句块执行完的时候,会自动关闭文件对象
第一种写法示例:
del f
#使用with...as 语法,当代码块中出现异常时,会自动关闭fwithopen("test")as f:
f.write("abc")#因为是只读模式打开,所有会出错。写入失败#测试f发现f已经关闭
f.closed
第二种写法:
f =open("test")with f:
f.write("abcd")#因为是只读模式打开,所有会出错。写入失败#测试f,f已经关闭
f.closed
python中零碎关键字语法1. if else 条件判断2. for ... in 循环3. while 循环4. if else表达式5. 解析式[]{}6. 生成器表达式()7. lambda匿名函数8. yield停止当前函数执行,通常用来创建生成器函数9. yield from语法糖10. with...as语法(上下文管理)1. if else 条件判断简单示例:a = "a...