zoukankan      html  css  js  c++  java
  • python基础之Day12

    一、闭包函数

    什么是闭包函数?

    闭:函数是一个内部函数

    包;指的是该函数包含对外部作用域(非全局作用域)名字的引用。

    给函数传值的方式有两种:

    1、使用参数直接给函数传值

    2、包给函数

    1
    2
    3
    4
    5
    6
    def outter(x):
        def inner():
                print(x)
        return inner()
    f-outter(10)
    f()

    二、装饰器

    器:工具,而程序中的函数就具备某一种功能的工具

    装饰:指的就是为被装饰对象添加额外的功能,就目前知识来看,定义装饰器就是定义一个函数,只不过该函数的功能是用来为其他函数添加额外功能的

    其实:

    装饰器本身其实可以是任意可以调用的对象

    被装饰的对象也可以是任意可以调用的对象

    为什么有装饰器:

    因为软件的维护应该遵循开放封闭的原则,开放封闭的原则指的是:

    软件一旦上线运行后,对修改源代码是封闭的,对扩展功能是开放的

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

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

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

    装饰器就是在遵循1、2的原则下为被装饰对象添加新功能

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import time
    def index():
        print('welcome to index')
        time.sleep(3)
    def timmer(func):
        def wrapper():
            start=time.time()
            func()
            stop=time.time()
            print('run time is %s'%(stop-start))
        return wrapper
    index=timmer(index)
    index()

     装饰器语法糖

    在被装饰对象上方,并且是单独一行上写上@装饰器名

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import time
    def timmer(func):
        #func=最原始的index
        def wrapper(*args,**kwargs):
            start=time.time()
            res=func(*args,**kwargs)
            stop=time.time()
            print('run time is %s' %(stop - start))
            return res
        return wrapper
     
    @timmer # index=timmer(index)
    def index():
        print('welcome to index')
        time.sleep(3)
        return 123
     
    @timmer # home=timmer(home)
    def home(name):
        print('welcome %s to home page' %name)
        time.sleep(2)
     
    res=index()
    home('egon')
  • 相关阅读:
    Bluetooth ATT 介绍
    用SQL语句去掉重复的记录
    xib模块化设计
    iOS 指纹识别常见问题汇总
    蓝牙信息传播原理
    UIAlertView 或 UIAlertController message 文字对齐设置
    iOS 跳转到系统设置的问题
    nordic 52832 DFU后出现无法重连的问题
    UIView类绘图出现错误提示
    nordic DFU固件升级
  • 原文地址:https://www.cnblogs.com/chicokiko/p/9188707.html
Copyright © 2011-2022 走看看