前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >老男孩Python全栈开发(92天全)视频教程 自学笔记16

老男孩Python全栈开发(92天全)视频教程 自学笔记16

作者头像
玩蛇的胖纸
发布2018-06-08 13:13:23
4540
发布2018-06-08 13:13:23
举报

 day16课程内容:

   装饰器:

代码语言:javascript
复制
def outer():
    x=10
    def inner():
        print(x)
    return inner
outer()()   #inner 是局部变量,10
闭包:如果在一个内部函数里,对外部作用域(但不是对全局作用域)的变量进行引用,那么内部函数就认为就被认为是闭包。
对修改封闭,对扩展开放,开放封闭原则!
import time
def foo():
    print('foo')
    time.sleep(1)
def bar():
    print('bar')
    time.sleep(1)
def show_time(f):
    start_time=time.time()
    f()
    end_time=time.time()
    print(end_time-start_time)
show_time(foo)          #实现了给任意函数增加计时的功能,但是同时也改变了函数的调用方式
#########
import time
def show_time(f):   #简单的装饰器
    def inner():
        start=time.time()
        f()
        end=time.time()
        print(end-start)
    return inner

@show_time  # 等价于:foo=show_time(foo)
def foo():
    print('拆东墙,当年的明月换拨人看。')
    time.sleep(1)
foo()
#拆东墙,当年的明月换拨人看。
#1.0000572204589844   装饰器
@show_time
def bar():
    print('兴也苦亡也苦')
    time.sleep(2)
bar()

######给功能函数加参数,的装饰器###
import time
def show_time(f):
    def inner(*x,**y):
        start=time.time()
        f(*x,**y)
        end=time.time()
        print(end-start)
    return inner

@show_time
def foo(*a,**b):
    sum=0
    for i in a:
        sum+=i
    print(sum)
    time.sleep(1)

foo(1,2,3,3,3,6)
# 18
# 1.0000569820404053

##给装饰器加参数的装饰器#####
import time
def logger(j=0):
    def show_time(f):
        def inner(*a,**b):
            start=time.time()
            f(*a,**b)
            end=time.time()
            print(end-start)
            if j==1:
                print('打印日志')
        return inner
    return show_time
@logger(1)
def foo(*x,**y):
    sum=0
    for i in x:
        sum+=i
    print(sum)
    time.sleep(1)
foo(3,1,2,3)
# 9
# 1.0000572204589844
# 打印日志
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  day16课程内容:
    •    装饰器:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档