Python 基础篇 第九节课
生成器函数
def produce_baozi(): for i in range(10): yield "一笼包子%s" %i pro_g = produce_baozi() baozi1=pro_g.__next__() baozi1=pro_g.__next__() baozi1=pro_g.__next__() print("来了一个人吃包子",baozi1) #输出来了一个人吃包子 一笼包子2
优点:1生成器的好处是延迟计算,一次返回一个结果。它不会一次生成所有结果,这对于大数据处理十分有用
2生成器有效提高代码可读性
注意:生成器只能遍历一次
生产消费者模式
def test(): yield 1 #yield 1 相当于return 控制函数的返回值 2 接受send传来的值 yield 123 t = test() res = t.__next__() print(res) t.send(None)
作业
1 列举布尔值为False的值
0,"",[],{},None.False
2写函数
根据范围获取其中3和7整除的所有数的和,并返回调用者
符合条件的数字个数及符合条件的数字的总和
def func(start,end): n=[] sum=0 for i in range(start,end): if i % 3 == 0 and i % 7 == 0: n.append(i) sum+=i print(len(n)) print('总数和是 %d' %sum) func(1,100)
3 break/continue/return的区别
break:结束当前循环
continue:结束本次循环进入下一次循环
return:结束函数,并返回结果,默认None
4函数传递参数时,时引用还是复制值?
引用
5三元运算书写格式以及应用场景
变量 = 值 if条件 else值二
ret = 1 if 1>0 else 5
6使用set集合获取两个列表 l1=[11,22,33],l2=[22,33,44]中相同的元素集合
l1 = [11,22,33] l2 = [22,33,44] a = set(l1)&set(l2) print(a)
7简述函数 位置参数,关键词参数,可变长参数的特点以及注意项
位置参数:按照形参的位置传入叫位置参数,就是普通参数
关键词参数:传入实参时按照形参的值
默认参数:形参直接指定默认值的参数
可变长参数:*args **kwargs,一个只能接受没有位置的实参或参入的列表,元组,两可以接受关键字参数和字典参数
8简述python3中range函数和python2.7中range函数有什么区别
python3中range不会生成值,只有用的时候才会生成
python2.7中range会直接生成一个列表,值已经生成
9简述对象和类的关系
如果值是某类型,那这个值就是这个类的对象
10内置函数all和any的区别
all是如果是空的,返回True,如果非空,全真为真,否则为假
11文件打开模式“r”和“rb”的区别
r是只读模式打开,默认以utf-8格式
rb是以二进制格式打开
12利用递归实现1*2*3*4*5*6*7=5040
def f(n): if n ==1: return 1 else: return n*f(n-1) a=f(7) print(a)
13 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
s=1 func = lambda x:(x+1)*2 for i in range(9): s= func(s) print(s)

浙公网安备 33010602011771号