zoukankan      html  css  js  c++  java
  • 闭包函数,和装饰器

    闭包函数

    内部函数包含对外部作用域而非全剧作用域名字的引用,
    该内部函数称为闭包函数

    给函数体传值的两种方式

    • 传参

      • 位置传参和关键字传参

    • 闭包

      • 闭包函数相当于 用函数将函数封装; 
        闭包的方式其实是在函数内通过返回值的方式将函数名称返回;
        然后通过调用函数名称的方式来调用函数

    装饰器

    定义

    • 器:就是一个工具 装饰:给被装饰对象添加新的功能

    必须遵循两个原则

    • 1.不改变被装饰对象源代码

    • 2.不改变被装饰对象(可调用对象)调用方式

    开放封闭原则:

    • 开放:对扩展开放 封闭:对修改封闭

    基本模板

    无参模板

    • 理解:封装过程中其实是将inner赋给被修饰函数了;
      所以传参的需求,可以写在inner的括号内;
      且要在最内层函数处 写变量名 用来接收

    有参模板

    • 就是再包一层函数, 然后将装饰器需要传入的参数写在最外层函数的形参位置 位置传参和关键字传参都行

    • 装饰器的有参无参,是针对装饰器内是否有参数的,而不是针对被修饰函数是否有参数

    补充知识点
    统计函数运行时间

    爬虫

    • 理解:通过方法获取html页面数据 方法:import requests中的request.get(url)

    装饰器修复技术

    如果没使用@wraps(func)

    1、那调用被装饰的函数,返回的事内层函数

    2、A.name返回的会是A函数的名称

    装饰器嵌套

    先写一个被装饰函数和两个闭包函数

    然后按先要执行功能的顺序写两次语法糖, 通过语法糖的返回值传递的方式 两个功能就顺序执行了

    装饰器语法糖:

    会将紧挨着它的可调用对象的名字当做参数自动传入调用装饰器
    语法糖在书写的时候应该与被装饰对象紧紧挨着 
    两者之间 不要 有空格

    执行原则:

    • 装饰器在装饰的时候 顺序从下往上
      装饰器在执行的时候 顺序从上往下

    理解:将最近的一个可调用对象传到装饰器

     

  • 相关阅读:
    主机连接不上虚拟机或虚拟机桥接没有网络
    asp web 报表
    heart or house?
    CPointer
    Raid
    Dos for by 随风
    不支持uri格式
    FabEdge V0.4 新特性:支持多集群通讯
    运维监控
    /etc缩写
  • 原文地址:https://www.cnblogs.com/buzaiyicheng/p/11176121.html
Copyright © 2011-2022 走看看