• 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
    
    
    
    
    ```
  • 相关阅读:
    纽约顶级富婆鄙视链:4星|《我是个妈妈,我需要铂金包:一个耶鲁人类学博士的上东区育儿战争》
    2星|陈春花《顺德40年》:各种官宣的汇编,内容太虚,新信息太少
    人们喜欢传播符合自己三观的新闻,不在乎真假:4星|《环球科学》2018年12月号
    营销相关21本书
    5星|《辩论:美国制宪会议记录》:200年前的会议纪要
    3星|《品牌物理学》:理论没有实际应用案例,有推销软件的嫌疑
    关于思考的思考12本书,5星2本,4星7本
    Chrome插件 postman的使用方法详解!最全面的教程
    postman发送json请求,使用案例
    SUSE Enterprise Server 12 SP3 64 设置防火墙开放8080端口
  • 原文地址:https://www.cnblogs.com/huhongpeng/p/10808583.html
Copyright © 2020-2023  润新知