zoukankan      html  css  js  c++  java
  • 装饰器与迭代器

    装饰器
    迭代器
    生成器
    列表解析,三元表达式,生成器表达式

    闭包函数
    定义在函数内部的函数,该函数引用外部作用域而不是全局作用域的名字,该函数称为闭包函数
    def 外部函数(func):
    def 内部函数(*args,**kwargs):
    pass
    return 内部函数

    f=外部函数(func)

    print(f.__closure__)
    print(f.__closure__[0].cell_contents)

    优点:
    1 自带作用域
    2 惰性延迟


    装饰器
    1 开放封闭原则:对扩展开放,对修改(修改源代码和调用方式)封闭
    2 什么是装饰器:装饰器本质是任意可调用对象,被装饰对象也可以是任意可调用对象

    装饰器遵循的原则:不修改被装饰对象的源代码和调用方式

    3 定义装饰器
    def 外部函数(func):
    def 内部函数(*args,**kwargs):
    pass
    return 内部函数

    4 装饰器的语法:@
    1 写在被装饰对象的正上方单独一行
    2 可以叠加多个
    定义阶段外部函数执行顺序是自下而上
    调用阶段内部函数的顺序是自下而上

    @timmer #index=timmer(index)
    def index():
    pass

    @wraps(func)加到def wrapper前面就可以查看原函数的注释或调用原函数

    print(index.__doc__)
    print(help(index))
    index.__wrapped__

    python为了提供一种不依赖于索引的迭代方式,会为一些对象内置__iter__方法
    有obj.__iter__称为可迭代的对象
    obj.__iter__()得到的结果就是迭代器

    迭代器的优点:
    1 提供了一种不依赖索引的取值方式
    2 惰性计算,节省内存

    迭代器的缺点:
    1 取值不如按照索引取值方便
    2 一次性的。只能往后走不能往前退
    3 无法获取长度

  • 相关阅读:
    iType.js仿输入文字效果
    css上下左右居中
    js的几种继承方式
    jquery ajax跨越
    js构造函数+原型
    less基础引用
    vw单位相关
    移动端适配(rem单位定义方法)
    第二周 day2 python学习笔记
    第一周 day1 Python学习笔记
  • 原文地址:https://www.cnblogs.com/yx179971/p/7047104.html
Copyright © 2011-2022 走看看