码迷,mamicode.com
首页 > 其他好文 > 详细

CSIC_716_20191112【闭包函数和装饰器】

时间:2019-11-12 16:04:40      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:odi   wrap   源代码   pre   str   func   round   关闭   rgs   

闭包函数

什么是闭包函数:闭包函数是函数嵌套、函数对象、名称空间和作用域的集合体。

闭包函数必须在函数内部定义,闭包函数可以引用外层函数的名字。

# _*_ coding: gbk _*_
# @Author: Wonder
def outer():
    def inner():
        #代码体
        return inner()

outer() # 调用闭包函数

 

 

装饰器

什么是装饰器:装饰器本身是一个函数,是在不修改其他函数源代码以及调用方式的前提下,给其他函数增加功能的函数。

装饰器遵循开放闭合原则。即对函数功能的添加是开放的,对函数功能的修改是关闭的。

 

为什么要使用装饰器:解决代码冗余问题,提高代码的可拓展性。

如何使用装饰器:1、编写装饰器,2、调用装饰器。

1、编写装饰器

装饰器的基本结构

def wrappper(func):
    def inner(*args, **kwargs):
        #函数执行前应增加的功能
        res = func(*args,**kwargs)
        #函数执行后应增加的功能
        return res
    return inner

2、调用装饰器

def wrappper(func):
    def inner(*args, **kwargs):
        #函数执行前应增加的功能
        res = func(*args,**kwargs)
        #函数执行后应增加的功能
        return res
    return inner

def func1(*args, **kwargs):
    # 函数体代码
    return
func1 = wrappper(func1)
func1(0, 1, a=0, b=1)  # 增加装饰器的原函数调用方式没变,源代码也没变

  python中还提供了解释器的语法糖结构,注意装饰器一定要写在被装饰对象前面。用@符号+装饰器函数名表示

 

def wrappper(func):
    def inner(*args, **kwargs):
        # 函数执行前应增加的功能
        res = func(*args, **kwargs)
        # 函数执行后应增加的功能
        return res

    return inner


@wrappper
def func1(*args, **kwargs):
    # 函数体代码
    print(‘闭包‘)
    return


func1(0, 1, a=0, b=1)  # 增加装饰器的原函数调用方式没变,源代码也没变

  

 

 

CSIC_716_20191112【闭包函数和装饰器】

标签:odi   wrap   源代码   pre   str   func   round   关闭   rgs   

原文地址:https://www.cnblogs.com/csic716/p/11842567.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!