zoukankan      html  css  js  c++  java
  • python全栈-Day 13

    一、复习

    1、函数

    • 函数的定义和调用
    • 函数定义:def 函数名(形参): + 函数体 + 返回值
    • 函数调用:函数名(实参)
    • 站在形参的角度上,有两种参数:位置参数*args,关键之参数**kargs
    • 站在实参的角度上,按照位置传参,按照关键字传参,必须先按照位置传参,按照关键字传参
    • 返回值个数:没有返回值,1个返回值,多个返回值
    • 返回值的接收:没有返回值不接收,1个返回值用一个参数接收,多个返回值用1个或多个参数接收

    2、闭包函数

    • 闭包函数的定义:在内部函数引用外部函数的变量

    3、装饰器

    • 作用:在不改变原函数的调用方式的情况下,在函数的前后添加新的功能
    • 装饰器完美的符合了一个开发原则:开放封闭原则(对扩展是开放的,对修改是封闭的)
    • 装饰器是闭包函数的一种应用
    • 基础的装饰器
    • 完美的装饰器
    • 带参数的装饰器----三层嵌套函数
    • 多个装饰器装饰一个函数

    二、迭代器的一些概念

    1、已知的可循环的对象类型:list、dic、str、set、tuple、f.open()、range()、enumerate(枚举)

    2、迭代器的标志性特点:可索引、可循环

    3、可迭代的几个重要概念

    • 可迭代协议:只要含有__iter__方法的都是可迭代的
    • 能使用for循环的数据类型,就一定拥有__iter__方法,就是可迭代的对象
    • 只有是可迭代对象的时候,才可以用for循环

    4、迭代器的几个重要概念

    • 迭代器协议:内部还有__next__和__iter__方法的就是迭代器
    • 只要是迭代器,就一定是可迭代的,但是可迭代的不一定是迭代器
    • 可迭代对象 调用一个__iter__()方法,就得到一个迭代器
    • 迭代器中的__next__()方法,可以从迭代器中一个个取值,for循环其实就是在使用迭代器的__next__()方法

    5、迭代器的好处:

    • 从容器中一个个的取值,会把所有的值都取到
    • 节省内存空间(迭代器不会在内存中占用一大块内存,而是随着循环每次生成一个元素)

    6、如何确定某个对象是否可迭代??(当我们遇到一个新的变量,不确定能否使用for循环的时候,就判断它是否可迭代)

    • 1、打印对象,结果中告诉你是一个iterator
    • 2、可迭代对象 可以迭代
    • 3、打印对象,结果中返回了一个内存地址,也有可能是可迭代的对象,只要确认对象可使用__iter__方法即可

     三、理解迭代器需要知道的一些知识点

    1、#双下方法:带双下划线的方法,指的是已经写好的可以用多种方法调用的方法,如 列表的加法其实就是__add__方法的其他调用形式:

    print([1].__add__([2]))
    print([1]+[2])

    2、使用dir()方法获得 参数可调用的全部方法的列表,如:

    print(dir([]))    #获取列表所拥有的全部方法
    print(dir({}))
    print(dir(''))
    print(dir(range(10)))

    3、求列表的交集

    求交集的方法 只有集合有,所以先要用 set()方法将列表强制转换为 集合,再用 & 符号取交集,结果是一个集合

    e = set(dir([])) & set(dir({})) & set(dir('')) & set(dir(range(10)))
    

     4、可迭代类型的对象 可使用__iter__方法

    # 以下几种数据类型是 可迭代的
    print('__iter__' in dir(list))
    print('__iter__' in dir(dict))
    print('__iter__' in dir(set))
    print('__iter__' in dir(tuple))
    print('__iter__' in dir(enumerate([])))  #枚举
    print('__iter__' in dir(range(1)))
    # 一下数据类型是 不可迭代的
    print('__iter__' in dir(int))
    print('__iter__' in dir(bool))
    
  • 相关阅读:
    Android 使用Application总结
    android数据保存
    Android 利用Application对象存取公共数据
    android 通过post方式提交数据的最简便有效的方法
    android http协议post请求方式
    maven下载及配置
    普通的101键盘在Mac上的键位对应
    高效使用你的Xcode
    maven安装及maven项目导入流程
    Mac键盘图标与对应快捷按键标志汇总
  • 原文地址:https://www.cnblogs.com/txbbkk/p/9732875.html
Copyright © 2011-2022 走看看