python闭包与装饰器

闭包

如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。它只不过是个“内层”的函数,由一个名字(变量)来指代,而这个名字(变量)对于“外层”包含它的函数而言,是本地变量。
实例:

def set_passline(passline):
    def cmp(val):
        if val >= passline:
            print ('pass')
        else:
            print ('failed')
    return cmp

f_100 = set_passline(60)
f_100(89)

f_150 = set_passline(90)
f_150(89)

装饰器

简单地来说装饰器就是在不改变原有函数的前提下,为函数加入新的功能。

实例:

def dec(func):
    def in_dec(*arg):
        if len(arg) == 0:
            return 0
        for val in arg:
            if not isinstance(val , int):
                return 0
        
        return func(*arg)
    return in_dec

@dec
def my_sum(*arg):
    return sum(arg)

def my_average(*arg):
    return sum(arg)/len(arg)
#my_sum = dec(my_sum)
my_average = dec(my_average)

print (my_sum(1,2,5,4,5))

print (my_sum(1,2,3,4,5,'6'))

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 闭包 1.函数引用 运行结果: 2.什么是闭包 运行结果: 3.重讲闭包 内部函数对外部函数作用域里变量的引用(非...
    墨痕hz阅读 5,408评论 0 4
  • # 本次讲述的知识点也是非常重要的(严肃脸) # 先有的闭包,之后才生成了装饰器,同样的也是非常简单的东西。 # ...
    米兰的小铁匠阅读 3,311评论 0 4
  • 运行结果如下: 闭包的定义:在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一...
    魔法高校的劣等生阅读 3,477评论 0 0
  • python万物皆对象! 闭包 闭包:两个函数的嵌套,外部函数返回内部函数的引用,外部函数一定有参数 def 外部...
    风舞柏杨阅读 4,174评论 2 0
  • 1998-2018 hide走了20年了 我知道他的时候他就不在了,有关他的一切都是过去时,但是在疯狂喜爱崇拜他的...
    YukiXue阅读 3,621评论 0 1

友情链接更多精彩内容