zoukankan      html  css  js  c++  java
  • day_5.24py

    世间万物皆对象!

    闭包就是内部函数中对enclosing作用域的变量进行引用。

    装饰器

    最开始就说,这篇博客始于闭包,终于闭包,所以装饰器不多说,只说四句话:
    1.装饰器就是对闭包的使用;
    2.装饰器用来装饰函数;
    3.返回一个函数对象,被装饰的函数接收;
    4.被装饰函数标识符指向返回的函数对象

    多个装饰器,完成包裹数据

    '''
    2018-5-24 13:56:08
    忘了关影子系统,本地代码丢失了一两天,
    还好保存到博客园了,影子系统桌面没提示 草WIn10
    继续代码走起
    装饰器!!
    @ python特有的
    '''
    # python不告诉你有重名函数
    # def test1():
    # print("test1")
    # def test1():
    # print("test2")
    # 只要是名都可以被改,名字仅仅是引用

    # def w1(func):
    # #定义一个闭包
    # def inner():
    # print("---正在验证权限---")
    # func()
    # return inner
    # @w1 #f1 = w1(f1)
    # #等价于给人一种感觉,在没有修改f1()的前提下完成验证,这就是装饰器
    # def f1():
    # print("----f1---")
    # @w1
    # def f2():
    # print("----f2----")
    #
    # f1()
    # f2()
    # # 多个装饰器,定义函数,完成包裹数据
    # def makeBold(fn):
    # def wrapped():
    # print("---1--")
    # return "<b>" +fn()+ "</b>"
    # return wrapped
    # #定义函数:完成包裹数据
    # def makeItalic(fn):
    # def wrapped():
    # print("--2--")
    # return "<i>" + fn() +"</i>"
    # return wrapped
    # ''' 装饰器什么时候进行装饰'''
    # #只要python解释器执行到这行代码时候就已经装饰完了
    # @makeBold
    # @makeItalic
    # def test3():
    # print("----3----")
    # return "hello world-3"
    # ret = test3()
    # #在调用f1之前,已经进行装饰了
    # print(ret)
    '''带参数的装饰器'''
    # def func(functionName):
    # print("---func--1---")
    # def func_in(*args,**kwargs):#如果a,b没有定义,那么会到导致16行的调用失败
    # print("----func_in--1-")
    # functionName(*args,**kwargs)#如果没有把a,b当做实参进行传递,那么会导致调用12行的函数失败
    # print("---func_in--2-")
    # print("----func-2-")
    # return func_in
    # @func
    # def test(a,b,c):
    # print("-----test-a=%d,b=%d,c=%c---"%(a,b,c))
    #
    # @func
    # def test2(a,b,c,d):
    # print("------test-a =%d,b=%d,c%d,d=%d----"%(d,b,c,d))
    #
    # test(11,22,33)
    # test2(44,55,66,77)
    '''装饰器对有返回值得函数'''
    def func(functionName):
    print("--func_in--1------")
    def func_in():
    print("--func_in--1------")
    #保存返回的"haha"
    xxxx = functionName() #z增加了一个变量存方法引用就可以解决返回值问题
    print("-----func_in---2")
    return xxxx
    print("--func_in--2------")
    return func_in
    @func
    def test():
    print("----test----")
    return "haha"
    ret = test()
    print("test return value is%s"%ret)
  • 相关阅读:
    数列分段divide
    精度计算(保留几位小数)
    洛谷P1119灾后重建
    暴雨rain
    石子游戏stone
    化学家chemist
    【ybtoj】【质数和约数】合并集合
    【ybtoj】【质数和约数】质数距离
    【ybtoj】【质数和约数】不定方程
    【再见OI】9.23模拟总结
  • 原文地址:https://www.cnblogs.com/zhen1996/p/9084599.html
Copyright © 2011-2022 走看看