Python Day15:生成器send方法、递归函数、匿名函数、常用内置函数

## 生成器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




```
原文地址:https://www.cnblogs.com/huhongpeng/p/10808583.html