zoukankan      html  css  js  c++  java
  • day12.1_闭包函数+装饰器

    一、闭包函数

    闭包的定义:①该函数是一个内部函数

                       ②该函数包含对外部的作用域(非全局作用域)中名字的引用

    1. 为函数体传值的方式

    1.1 使用参数形式

    1.2 包给函数

    def outter(x):
        def inner():
            print(x)
        return inner       #函数当返回值(对象)
    f=outter(1)            #相当于赋值
    f()

    二、装饰器

    1.装饰器是什么?

    ①为被装饰器对象添加额外的功能  ② 可以当成工具,函数就具备某一功能的工具

    装饰器本省可以是任意可调用的对象,被装饰的对象也可以是任意可调用的对象

    2.为什么需要装饰器?

    软件一经发布之后,需要进行版本的更新迭代。软件的维护需遵循开放封闭原则,即对日后修改源代码是封闭的,对扩展功能的是开放的

    装饰器的实现须遵循两大原则:

    ①不修改被装饰对象的源代码

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

    总的来说,装饰器就是在遵循①②的前提下为被装饰对象添加新功能

    3.装饰器用来干什么?

     1 import time
     2 def index():
     3     print("welcome to index")
     4     time.sleep(3)
     5 def timmer(func):
     6     #func=最原始的index
     7     def wrapper():
     8         start=time.time()
     9         func()
    10         stop=time.time()
    11         print("spend time is %s"%(stop-start))
    12     return wrapper
    13 index=timmer(index)    #index=wrappera函数的内存地址
    14 index()
  • 相关阅读:
    代理工具
    python-requests简单使用
    Charles使用 请求转发【map remote】 rewrite-body替换 rewrite-modify query param
    charles监控 移动端HTTPS请求
    unittest执行测试用例过程
    JVM工具命令
    JAVA开发小技巧
    命名神器(妈妈再也不用担心我瞎命名了)
    CookieUtil、EncryptUtil(各种加密算法)、HttpUtil
    常见Maven命令
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9170709.html
Copyright © 2011-2022 走看看