美文网首页
python高级基础

python高级基础

作者: Esc偉 | 来源:发表于2017-05-12 19:51 被阅读0次

    生成器
    生成器就是一边循环一边执行可以减小内存压力
    生成器的两种方法
    第一种 将列表生成式进行修改 中括号改成小括号就好了
    第二种 就是循环函数中添加 yield
    生成器获取 方式 next() __next()
    yield 有send () 给一个数据 本身yield 代码块没有返回值

    迭代器
    可迭代对象 iterable
    集合数据类型 生成器
    迭代器 iterator
    可以用next获取的数据
    如何判断
    from collections import Iterable,Iterator
    通过isinstance进行判读
    iter 可以将可迭代对象转成 迭代器

    闭包
    就是函数里面嵌套函数形成闭包 闭包的范围是内部函数和变量
    内部变量如何在内部函数修改 通过nonlocal 定义 用法和global差不多

    装饰器
    作用就是在原有功能模块代码基础上不修改原有代码 进行扩展
    原理就是闭包调用一个函数 返回一个新的函数 这个函数的引用 和原函数的引用名一样
    用法
    @ 扩展的函数
    有很多类型可以放参数等等多次装饰

    import 模块的导入 sys.path 可以查看 模块导入的搜索路径是个列表可以进行列表操作
    重新加载模块 通过 from imp import reload reload(模块名)
    进行重新加载

    作用域 命令空间

    变量都有各自的作用域 变量的搜索 按照LEGB
    locals 本地变量
    enclosing function 闭包呢的变量
    globals 模块中的全局变量
    builtins 內建属性或方法

    == is == 值相同 is 是内存地址相同

    深拷贝 浅拷贝 利用copy模块
    copy.copy 浅拷贝 不可变类型复制引用 可变类型 只会复制顶层数据
    copy.deepcopy 深拷贝 不可变类型 查看 内部是否有可变类型如果有就申请内存拷贝一份 如果没有复制引用 可变类型 将所有层都复制一份

    私有化 _x 作用 模块导入时 不会被 导入 _x 类中私有的不会别继承 xx 魔法方法 x 为了区分关键字

    property 作用 简化 对类中的属性进行修改
    用法 变量=property(get(),set())
    或 通过修饰器 @ property @变量.setter

    元类 用来创建类 type方法type(class_name, (father) ,属性和方法{})
    通过metaclass 属性来创建类 也可以自定义

    垃圾回收
    四个需要注意的点
    小整数池 [-5,256] 内存常驻 系统默认生成
    大整数池 都会重新创建
    inter机制 共享机制 字符串没有空格 多次复制 用的是同一个
    单个字母 内存常驻
    垃圾回收 过程 引用计数为主 分代收集为辅
    分代收集 是为了解决 循环引用问题 有0代 1代 2代
    gc模块
    disable 关闭 垃圾回收
    collect 手动进行一次垃圾回收
    gc.get_threshold 获取引用计数的阀值
    gc.get_count 获取当前的引用计数

    內键属性 str init del class new 等等

    內键函数
    range
    map
    filter
    reduce
    sorted

    集合set
    并集
    交集
    差集
    对称差集

    相关文章

      网友评论

          本文标题:python高级基础

          本文链接:https://www.haomeiwen.com/subject/zcdtxxtx.html