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

    一.装饰器的使用

    定义:装饰器:本质是函数,(装饰其它函数)就是为其它函数添加附加功能。

    原则:1.不能修改被装饰函数源代码

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

     

    实现装饰器知识储备:

    1.函数即“变量”

    2.高阶函数

      a:把一个函数名当做实参传给另外一个函数(不修改被装饰源代码

         的情况下为其添加功能)。

      b:返回值中包含函数名(不修改函数的调用方式)。

    3.嵌套函数

    注:嵌套函数是一层下,接着嵌套第二层。

     

     1 x=0
     2 def grandpa():
     3     # x=1
     4     def dad():
     5         x=2
     6         def son():
     7             x=3
     8             print (x)
     9         son()
    10     dad()
    11 grandpa()

    高阶函数+嵌套函数=>装饰器

     

    二.装饰器使用进阶

     

     

    创建一个装饰器,不修改源文件,修改方式,添加新功能。

     1 import time
     2 def timer(func):
     3     def deco():
     4         start_time=time.time()
     5         func()
     6         stop_time=time.time()
     7         print("the func run time is %s" %(stop_time-start_time))
     8     return deco
     9 
    10 def test1():
    11     time.sleep(2)
    12     print("123123")
    13 test1 = timer(test1)
    14 test1()
    1 #执行
    2 @time #test1=timer(test1)

    注:使用了高阶函数,嵌套函数实现。

    注:使用变量实现。

    注:返回值是内存地址,加括号()执行内存地址。

    注:1.可以创建变量来实现。

      2.可以直接在函数上写入“@变量名”等于变量实现。

     

    注:内存变量机制

    1.变量创建后会放入到内存中,函数也是变量。

    2.变量后面的值在内存中,变量名则是门牌号。

    3.当变量门牌号被删除时,内存中的值会被定期清理掉。

    4.python是解释性语言。

     

  • 相关阅读:
    eclipse历史版本下载地址
    注解@SuppressWarnings
    VB创建文件夹
    VB学习生成JavaBean
    C++下的强制转换类型
    Django扩展
    数据查询操作
    深入剖析C++多态、VPTR指针、虚函数表
    快速排序一步一步优化
    cookie与session
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/7767330.html
Copyright © 2011-2022 走看看