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

    装饰器:

    定义:本质上还是函数(功能:装饰其他的函数)也就是说:为其他函数添加附加功能

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

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

    总结:也就是说被修改的函数感知不到装饰器的存在,因为没有动函数的运行

    实现装饰器知识储备:

    1、函数即“变量”

    2、高阶函数

    3、嵌套函数

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

    1、函数即变量

    通过del只是删除掉了门牌号,因为每过一段时就会刷新一次,看那些变量没有被利用就会回收内存。比如;x=1一直被利用就永远不会被清空,除非用del来进行清理变量名,当一段时间刷新时,发现没有门牌号 1没有被引用才会清理掉

    Python是通过查找变量名字,如果找不到之后,才会将其中的1删掉  这就是python中的内存回收机制(门牌号没有的情况下会清除掉内容)

    其中的lambda x:x*3是可以直接被回收的,可以通过calc = lambda x:x*3 定义一个门牌号

    2、高阶函数

    a:把一个函数当做实参传递给另外一个函数(在不修改被装饰函数源代码的情况下为其添加功能)

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

      1 装饰器:
      2 
      3 定义:本质上还是函数(功能:装饰其他的函数)也就是说:为其他函数添加附加功能
      4 
      5 原则:1、不能修改被装饰函数的源代码
      6 
      7 2、不能修改被装饰函数的调用方式
      8 
      9 总结:也就是说被修改的函数感知不到装饰器的存在,因为没有动函数的运行
     10 
     11 实现装饰器知识储备:
     12 
     13 1、函数即“变量”
     14 
     15 2、高阶函数
     16 
     17 3、嵌套函数
     18 
     19 高阶函数 + 嵌套函数==》装饰器
     20 
     21 1、函数即变量
     22 
     23 
     24 
     25 
     26 通过del只是删除掉了门牌号,因为每过一段时就会刷新一次,看那些变量没有被利用就会回收内存。比如;x=1一直被利用就永远不会被清空,除非用del来进行清理变量名,当一段时间刷新时,发现没有门牌号 1没有被引用才会清理掉
     27 
     28 
     29 Python是通过查找变量名字,如果找不到之后,才会将其中的1删掉  这就是python中的内存回收机制(门牌号没有的情况下会清除掉内容)
     30 
     31 
     32 其中的lambda x:x*3是可以直接被回收的,可以通过calc = lambda x:x*3 定义一个门牌号
     33 
     34 
     35 2、高阶函数
     36 
     37 
     38 a:把一个函数当做实参传递给另外一个函数(在不修改被装饰函数源代码的情况下为其添加功能)
     39 
     40 
     41 b:  返回值中包含函数名(不修改函数的调用方式)
     42 
     43 
     44 # 匿名函数
     45 # calc = lambda x:x*3
     46 # print(calc) #输出为   <function <lambda> at 0x0127C660> 内存地址
     47 # #函数即变量
     48 # 方法1:
     49 # def bar():
     50 #     print('in the bar')
     51 # def foo():
     52 #     print('in the foo')
     53 #     bar()
     54 # foo()
     55 # 方法2:
     56 # def foo():
     57 #     print('in the foo')
     58 #     bar()
     59 # def bar():
     60 #     print('in the bar')
     61 # foo()
     62 #高阶函数
     63 # def bar():
     64 #     print("in the bar")
     65 # def test1(func):
     66 #     print(func)
     67 #     func()
     68 # func =bar   #函数即变量 将函数bar当做一个变量赋给函数func
     69 # test1(bar)
     70 
     71 # import time
     72 # def bar ():#被修饰的函数
     73 #      time.sleep(3)
     74 #      print("in the bar")
     75 # def foo(func):#
     76 #     first_time =time.time()
     77 #     func()#运行被修饰的函数
     78 #     stop_time=time.time()
     79 #     print("run the func is %s" %(stop_time-first_time))
     80 # foo(bar)
     81 
     82 
     83 import time
     84 def bar():
     85     time.sleep(3)
     86     print('in the bar')
     87 def foo(func):
     88     first_time = time.time()
     89     func()#运行被修饰的函数
     90     stop_time=time.time()
     91     print("run the func is %s" %(stop_time-first_time))
     92     return func
     93 print(foo)
     94 bar =foo(bar)#python 解释器中有专门的符号来处理 “=” 并且功能相同
     95 bar()#相当于不修改函数的调用方式
     96 #foo(bar)
     97 
     98 # import time
     99 # def bar():
    100 #     time.sleep(3)
    101 #     print('in the bar')
    102 # def test2(func):
    103 #     print(func)
    104 #     return func
    105 # bar =test2(bar)
    106 # bar()
    107 
    108 
    109 
    110 
    111 
    112 
    113 
    114  
    View Code

    3、嵌套函数

    1 在函数内部以def进行开始的函数
    2 Eg:  def test1():
    3     print('in the test1')
    4     def bar():  #函数的嵌套
    5         print('in the bar')
    6     bar()#函数的调用
    7 test1() 

    局部作用域和全局作用域的访问顺序

     1 x =0
     2 def  A():
     3     x =1
     4     def B():
     5         x =2
     6         def C():
     7             x =3
     8             print(x)
     9         C()
    10     B()
    11 A()
    View Code
  • 相关阅读:
    OSCP Learning Notes Buffer Overflows(3)
    OSCP Learning Notes Buffer Overflows(5)
    OSCP Learning Notes Exploit(3)
    OSCP Learning Notes Exploit(4)
    OSCP Learning Notes Exploit(1)
    OSCP Learning Notes Netcat
    OSCP Learning Notes Buffer Overflows(4)
    OSCP Learning Notes Buffer Overflows(1)
    OSCP Learning Notes Exploit(2)
    C++格式化输出 Learner
  • 原文地址:https://www.cnblogs.com/wises/p/8360972.html
Copyright © 2011-2022 走看看