zoukankan      html  css  js  c++  java
  • 装饰器

    一  函数对象

    函数时第一类对象:指的是函数可以当做数据传递

    ①可以被引用

    ②可以被当做函数的参数传入

    ③ 可以当做函数的返回值

    ④可以当做容器的元素

     二  函数嵌套

    1、函数的嵌套调用

    2、 函数的嵌套定义

    三 名称空间与作用域

    1、名称空间指的是: 存放名字与值绑定关系的地方

    1)内置名称空间:python解释器内置的名字。max,len等(python解释器启动就有)

    2)全局名称空间 :文件级别定义的名字  (执行python文件时生效)

    3)局部名称空间: 函数内部定义的名字(在函数调用时生效,调用结束后失效)

     加载顺序: 内置--全局--局部名称空间

    访问名字顺序:  局部--全局--内置

     

    2、全局作用域(全局范围): 内置名称空间与全局名称空间的名字,全局存活,全局有效,globals()

         局部作用域(局部范围):  局部名称空间的名字,临时存活,临时有效  locals()

     3、打破函数层级限制来调用函数

    4、函数的作用关系在函数定义阶段就已经固定了,与调用无关

     

    四 闭包函数

     定义在函数内部的函数,该函数的函数体代码包含对外部作用域(而不是对全局作用域)名字的引用,通常将闭包函数用return返回,可以在任意位置使用

     

    五 装饰器

    1、 开放封闭原则: 对扩展开放,对修改封闭

    2、装饰器: 装饰他人的,器指的是任意可调用对象,现在的场景--函数

    3 、原则:①不修改被装饰对象的源代码

                    ②不修改被装饰对象的调用方式

    装饰器的目的:在遵循1,2,的前提下为被装饰的对象添加新功能

    源代码

     新功能:统计函数的执行时间

     

     4、装饰器的语法

    问题一: 假如函数index有返回值的问题

     

    问题二; index()函数有参数的情况下

     5、以上可以看做是无参装饰器,下面来有参装饰器

    源代码:

    为index实现授权功能

    修订版本,有参装饰器

    增加了engine变量

    6、并列多个装饰器

     7、给函数加上注释

  • 相关阅读:
    Node js 入门指南(1)
    书单
    JavaScript
    Web框架的本质
    Linux运维面试(填空题)
    Ubuntu更换国内源
    动态路由-OSPF
    CentOS7安装桌面环境
    anaconda系统安装&kickstart文件
    Tomcat之分布式session共享(MSM)
  • 原文地址:https://www.cnblogs.com/yuguangwei/p/8065106.html
Copyright © 2011-2022 走看看