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

    定义:

    装饰器本质是函数,装饰器的功能是装饰其它函数的(添加附加功能),

    原则:

    1.不能修改被装饰的函数。

    2 不能修改被装饰的函数的调用方式。

     实现装饰器的知识储备

    1、函数即变量

    2、高阶函数

    3、嵌套函数

    函数即变量

    定义一个函数以后,跟字符串的定义是一样的,存在内存中的某一个空间内,函数体就是一个字符串(调用的时候函数名加一个括号会立即执行里面的代码,基于内存地址做调用)。这个空间地址就给个函数名,相当与一个房间的门牌号。

    那与之对应的就是回收机制。一些没有用的变量会及时的释放空间。

    当某个空间的引用次数为0的时候,那么这个空间会被回收。

    比如 x=1 那么1被x引用一次。

    del x 把x删除了其实是把1的引用删除了,那么1的空间会被回收。

    如果没有删除x 那么就会等程序结束在删除x的引用空间。

     高阶函数

    a:把一个函数名当作实参传给另一个函数

    DEMO:

     

    调用bar函数:

    b:返回值中包含函数名

    有内存地址的意义就是加上括号就能运行。

    嵌套函数

     

    计算两个函数的 运行时间

    不修改函数调用方式:

    但是这样太麻烦了,并且调用test1之前把地址修改了。如果直接调用test1而且不用修改要怎么做?

    python有个内置语法,定义如下

    #@装饰器名称 写在要装饰的函数的上面 等于 test1 = timer(test1)的操作
    #要调用的函数名称
    @timer
    test1()
    

     

    得出一个结果,在需要用到装饰器的函数的上面要写@装饰器名称,如果两个函数要用到就要在每个函数上面写一次。

    优化版:

    demo:模拟网站登录,首页不需要登录,其它页面要登录。

  • 相关阅读:
    [转]list的交集,差集,并集
    [转]$.post() 和 $.get() 如何同步请求
    [转]Jsoup(一)Jsoup详解(官方)
    [转]Kindeditor图片粘贴上传(chrome)
    [转]kindeditor隐藏上传图片框网络图片或本地上传的功能
    微信公众号平台上传文件返回错误代码:40005 invalid file type
    [转]spring MultipartFile 转 File
    [转]客户端js判断文件类型和文件大小即限制上传大小
    java list排序
    spring security oauth2.0 实现
  • 原文地址:https://www.cnblogs.com/qing-chen/p/7253424.html
Copyright © 2011-2022 走看看