zoukankan      html  css  js  c++  java
  • python学习之老男孩python全栈第九期_day012知识点总结

    # def wrapper(f):
    # def inner(*args,**kwargs):
    # print('在被装饰的函数执行之前做的事')
    # res = f(*args,**kwargs)
    # print('在被装饰的函数执行之后做的事')
    # return res
    # return inner
    # @wrapper # holiday = wrapper(holiday) 这时holiday == inner
    # def holiday(day):
    # print('全体放假%s天'%day)
    # return '好开心'
    # ret = holiday(3)
    # print(ret)

    # def outer(*args,**kwargs):
    # print(args,kwargs)
    # print(*args)
    # def inner(*args):
    # print('inner:', args)
    # inner(*args)
    # outer(1,2,3,4,a = 1,b = 2)

    # def wahaha():
    # '''
    # 一个打印娃哈哈的函数
    # :return:
    # '''
    # print('娃哈哈')
    # print(wahaha.__name__) # 查看字符串格式的函数名
    # print(wahaha.__doc__) # document (查看函数的注释)


    # from functools import wraps
    # def wrapper(f): # f = holiday
    # @wraps(f) # 加上这句话之后, holiday 就是holiday 不是inner了
    # def inner(*args,**kwargs):
    # print('在被装饰的函数执行之前做的事')
    # res = f(*args,**kwargs)
    # print('在被装饰的函数执行之后做的事')
    # return res
    # return inner
    # @wrapper # holiday = wrapper(holiday) 这时holiday == inner ,这时还没加上面那句话
    # def holiday(day):
    # print('全体放假%s天'%day)
    # return '好开心'
    # ret = holiday(3)
    # print(holiday.__name__) # 输出inner,加了上面那句话之后输出 holiday

    # ---------------------------------------------------------------------------------------------------- #

    # 带参数的装饰器

    # 500个函数
    #
    # import time
    # FLAG = True
    # def timmer_out(flag):
    # '''
    # 计算机函数执行时间
    # :param flag:flag为真时,运行这个函数,为假时不运行
    # :return:
    # '''
    # def timmer(func):
    # def inner(*args,**kwargs):
    # if FLAG:
    # start_time = time.time()
    # ret = func(*args,**kwargs)
    # end_time = time.time()
    # print(end_time - start_time)
    # return ret
    # else:
    # ret = func(*args, **kwargs)
    # return ret
    # return inner
    # return timmer
    # @timmer_out(FLAG) # 先调用timmer_out(FLAG),返回的结果为timmer, 加了@ 之后就等于 @timmer,就等于wahaha = timmer(wahaha)
    # # 上个式子等价于:
    # # timmer = timmer_out(FLAG)
    # #@timmer
    #
    # def wahaha():
    # time.sleep(0.1)
    # print('娃哈哈')
    # @timmer_out(FLAG)
    # def erguotou():
    # time.sleep(0.1)
    # print('二锅头')
    # wahaha()
    # erguotou()


    # 多个装饰器装饰一个函数

    #
    # def wrapper1(func): # func --> f
    # def inner1():
    # print('wrapper1,before func')
    # func() # f
    # print('wrapper1,after func')
    # return inner1
    #
    # def wrapper2(func): # func --> inner1
    # def inner2():
    # print('wrapper2, before func')
    # func() # 其实是 inner1()
    # print('wrapper2, after func')
    # return inner2
    #
    # @wrapper2 # f = wrapper2(f) --> wrapper2(inner1), 返回的inner2,故 f == inner2
    # @wrapper1 # f = wrapper1(f) 返回的inner1,故 f == inner1
    #
    # # 先找最近的函数,wrapper2没找到, wrapper1先找的f(),然后wrapper2又找的
    # def f():
    # print('in f')
    #
    # f() # --> inner2()

    # ---------------------------------------------------------------------------------- #
    # 三个

    def wrapper1(func):
    def inner1():
    print('wrapper1,before func')
    ret = func()
    print('wrapper1,after func')
    return ret
    return inner1

    def wrapper2(func):
    def inner2():
    print('wrapper2, before func')
    ret = func()
    print('wrapper2, after func')
    return ret
    return inner2

    def wrapper3(func):
    def inner3():
    print('wrapper3, before func')
    ret = func()
    print('wrapper3, after func')
    return ret
    return inner3

    @wrapper3
    @wrapper2
    @wrapper1
    def f():
    print('in f')
    return '哈哈哈'
    print(f())

    # 记录用户的登录情况 and 计算这个函数的执行时间
  • 相关阅读:
    [hdu-2048] 神、上帝以及老天爷
    or1200中IMMU分析(续)
    Java Applet读写client串口——终极篇
    树莓派_Linux串口编程_实现自发自收
    2014百度实习生面试题(部分)具体解释
    Leetcode
    eclipse+webservice开发实例
    现有一些开源ESB总线的比較
    《HTML5 从入门到精通--7.6.3 单元格垂直跨度——rowspan》
    百度究竟是哪国的公司
  • 原文地址:https://www.cnblogs.com/lpgit/p/9292042.html
Copyright © 2011-2022 走看看