博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 11
阅读量:4981 次
发布时间:2019-06-12

本文共 1292 字,大约阅读时间需要 4 分钟。

# 一、闭包## 判断:函数名.__closure__# 若返回cell,则是闭包,返回None则不是闭包。## 闭包:内层函数对外层函数非全局变量的引用就叫闭包。def func1(x):    def func2():        print(x)    func2()    print(func2.__closure__)    return xname = '小明'func1(name)# 以上这个函数,其实在执行func1(x)的时候,创建了一个x = '小明'的变量,所以,判断为闭包。# 用处:当执行一个函数时,如果解释器判断此函数内部存在闭包,这样python就触发一个机制,闭# 包的所在的临时名称空间不会随着函数的执行完毕而消失。(爬虫可以抓一次数据多次读取。)
# 二、装饰器import timedef timmer(f):    def inner():        str_time = time.time()        f()        end_time = time.time()        print('此函数执行时间为:%s' % (end_time - str_time))    return innerdef login():    time.sleep(3)    print('洗洗更健康...')login = timmer(login)# 在函数上一行加入 @装饰器函数名 ,等同于执行了 函数名 = 装饰器函数名(函数名)import timedef timmer(f):    def inner():        str_time = time.time()        f()        end_time = time.time()        print('此函数执行时间为:%s' % (end_time - str_time))    return inner@timmerdef login():    time.sleep(3)    print('洗洗更健康...')

 

# 在优化一下,让装饰器可以接受多个值,并且返回该函数的返回值。import timedef timmer(f):    def inner(*args, **kwargs):        str_time = time.time()        ret = f(*args, **kwargs)        end_time = time.time()        print('此函数执行时间为:%s' % (end_time - str_time))        return ret    return inner@timmerdef login(a, b):    time.sleep(3)    print('洗洗更健康...%s, %s' % (a, b))    return 666

 

转载于:https://www.cnblogs.com/leonraw/p/9024019.html

你可能感兴趣的文章
WPF中设置快捷键
查看>>
vector(C++)讲解
查看>>
Java动态编译
查看>>
[I2C].I2C总线详解
查看>>
计算机网络面试知识总结3
查看>>
数字签名与数字证书以及https
查看>>
Zabbix 监控数据库MSSqlServer
查看>>
纪念我12月15日中国银行笔试
查看>>
问卷调查
查看>>
软件工程第五次作业
查看>>
Spring MVC 向前台页面传值-ModelAndView
查看>>
安卓开发之内容提供者案例
查看>>
阿里电话面试问题----100万个URL怎样找到出现频率最高的前100个?
查看>>
socket编程之obj压缩加密传输
查看>>
连载:面向对象葵花宝典:思想、技巧与实践(36) - 设计原则怎样用?
查看>>
代码清除页面切换过渡现象
查看>>
UIPageControll 的属性和用法
查看>>
(024)[工具软件]截屏录屏软件FSCapture(转)
查看>>
easyui datagrid 获取行号及根据行号获取该行数据
查看>>
ubuntu下SiLabs EC3调试C8051F 单片机
查看>>