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:模拟网站登录,首页不需要登录,其它页面要登录。

  • 相关阅读:
    JVM调优方法笔记
    JVM调优方法笔记
    JavaScript实现选择排序
    自动安装带nginx_upstream_check_module模块的Nginx脚本
    自动安装带nginx_upstream_check_module模块的Nginx脚本
    自动安装带nginx_upstream_check_module模块的Nginx脚本
    简单的文件上传html+ashx
    【转】建构修正版 Casper 协议
    【转】为什么去中心化兑换协议很重要
    【转】当我们说“区块链是无需信任的”,我们的意思是
  • 原文地址:https://www.cnblogs.com/qing-chen/p/7253424.html
Copyright © 2011-2022 走看看