## 生成器send方法:了了解 ```python send工作原理:1,send发送信息给当前停止的yield 2,send再去调用__next__()方法,生成器接着往下指 向,返回下一个yield值并停止 案例: def func(): r1 = yield 1 print(r1) r2 = yield 2 print(r2) r3 = yield 3 print(r3) obj = func() # 生成器对象 print(obj.__next__()) print(obj.send(1111)) print(obj.send(2222)) def fn(): r1 = yield 1 print(r1) #r1为"给第一个yield发生值" yield r1 + str(2) #yield接收or3的值,但是没有变量接受。 yield 3 o = fn() or1 = o.send(None) # 1 print(or1) #or1为 1 or2 = o.send('给第一个yield发生值') # 2 o.send()的执行结果 为:r1 + str(2) print(or2) or3 = o.send('给第二个yield发生值') # 3 print(or3) ``` ## 递归 ```python 定义:函数直接或者间接调用本身,都称之为递归 回溯:寻找答案过程,即函数循环调用部分 递推:推出结果的过程,即return的过程。 递归条件:1,递归必须有出口,即结束条件, 2,递归回溯的条件一定有规律 案例 def get_age(count): if count == 1: return 58 # 第 九...一 个人 - 2 age = get_age(count - 1) - 2 return age age = get_age(3) print(age) ``` ## 匿名函数 ```python 匿名函数: 1,函数没有函数名 2,函数的关键字采用lambda 3,关键字lambda与冒号直接是参数,省略()。 4,没有函数体,只有返回值。return省略。 格式:lambda *args,**kwargs:"返回值" 注意: 参数的使用和有名函数一样,六种形参都支持。 返回值必须明确成一个值,但可以为一个容器对象,接受多个值 ``` ## max结合匿名工作原理 ```python 1,max内部会遍历iter,将遍历结果一一传给lambda的参数x 2,依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值 3,对外返回最大的遍历值 max(iter,func) => max(iter,lambda x:x) ``` ## 常用的内置函数 ```python map(func,iter):将iter的遍历结果,依次传给func参数,映射对象为func的返回值,并对应iter的值 reduce(func(),iter)同理 sorted(iter, fn, reverse) res = sorted(dic, key=lambda k: dic[k][1]) print(res) # ['zero', 'tom', 'owen'] 与类型相关的常用内置函数: list(),str(),ord(),chr(),bool(),int()``` 进制转化类型 print(bin(10))#转换成二进制:1010 print(oct(10))#转换成八进制:12 print(hex(10))#转换成十六进制:a print(0b1111)#二进制转换成十进制 15 print(0o10)#八进制转换成十进制 8 print(0x11)#十六进制转换成十进制17 常用操作类: range()len()iter()next()enumerate()id()type() print()input()open() 原义字符串: print(r"a b")#斜杠转义不再转义,原义打出 print(ascii("a b")) print(repr("a b")) 数字运算类: abs()sum()max()min()pow()sorted() print(pow(2,3))#2**3 print(pow(2,3,3))#(2**3)%3 ```