zoukankan      html  css  js  c++  java
  • day_13

    上节课回顾

    闭包函数

    把变量x和函数a包在闭包函数b中,然后返回函数a+变量x

    装饰器

    1. 本质就是一个函数,用来给另外一个函数添加功能
    2. 不修改被装饰函数的源代码
    3. 不修改被装饰函数的调用方式

    装饰器模板

    二层装饰器

    三层装饰器

    给二层装饰器传参

    今日所学

    迭代器

    for循环就是应用了迭代器原理 , 可迭代对象不一定低迭代器 , 但是迭代器一定是可迭代对象

    可迭代对象

    具有__iter__方法的 就是可迭代对象

    基本的数据类型 , 除数字类型和布尔类型外 , 都是可迭代对象

    __iter__方法可以使可迭代对象变成迭代器

    迭代器

    同时具有__iter____next__方法的 就是迭代器

    只有文件对象是迭代器

    迭代器特点:

    1. 内置__next__方法,执行该方法会拿到迭代器对象中的一个值
    2. 内置有__iter__方法,执行该方法会拿到迭代器本身
    3. 文件本身就是迭代器对象。

    缺点:

    1. 取值麻烦,只能一个一个取,并且只能往后取,值取了就没了
    2. 无法使用len()方法获取长度

    三元表达式

    条件成立时的返回值 if 条件 else 条件不成立时的返回值

    x = 10
    y = 20
    
    # 正常操作
    if x > y:
        print(x)
    else:
        print(y)
     
        
    # 只能用于单分支结构
    print(x) if x > y else print(y)
    

    列表推导式

    lt = []
    
    # 正常操作
    for i in range(10):
        lt.append(i**2)
    
    print(lt)
    
    # 简化版的  列表推导式
    lt = [i ** 2 for i in range(10)]
    

    字典生成式

    print({i: i**2 for i in range(10)})
    

    zip()方法

    通过解压缩函数生成一个字典

    生成器

    generator,本质就是迭代器,生成器是一个自定义的迭代器

    生成器:含有yield关键字的函数叫做生成器

    def ge():
        yield 3 #一个yield相当于一个next;可以暂停函数
    	yield 4
    

    递归

    函数a内部直接调用函数a本身

    每一次递归,不会结束函数,并且每一次递归都会开辟内存空间,但如果一直开辟那就炸了,所以最多递归1000次

    真正的递归必须得要有退出条件

    #递归
    def a():
        global count
        count += 1
        print(count)
        if count == 5:
            return
        a()
    a()
    
  • 相关阅读:
    建立适当的索引
    Windows 10Bash命令
    代码生成工具介绍和使用
    分布式的任务调度框架
    Net分布式系统
    Keepalived+LVS+Nginx负载均衡之高可用
    call,apply,bind
    2015搜狐在线笔试题(内存泄露问题)(转)
    十步完全理解SQL(转)
    Linux shell用法和技巧(转)
  • 原文地址:https://www.cnblogs.com/maqiaobin/p/11578589.html
Copyright © 2011-2022 走看看