python3.7 装饰器
#!/usr/bin/env python
__author__ = "lrtao2010" #python3.7 装饰器 #装饰器
'''
定义:本质就是一个函数,作用是为其他函数添加新的功能。
遵循的原则:
1、不改变被修饰函数的源代码(开放封闭原则);
2、为被装饰函数添加新功能后,不修改被修饰函数的调用方式。
'''
#装饰器=高阶函数 + 函数嵌套 + 闭包 #高阶函数
'''
定义:
1、函数接收的参数是一个函数名;
2、函数的返回值是一函数名;
3、满足上述条件任意一个,都称之为高阶函数
''' #函数嵌套
#在一个函数中再定义一个函数,并调用该函数 #闭包
#在一个作用域里放入定义的变量,相当于打了一个包 # import time
#
# def run_time(func):
# def wrapper():
# star_time = time.time()
# func()
# stop_time = time.time()
# print("运行时间是%s" %(stop_time - star_time))
# return wrapper
#
# @run_time
# #@ 语法糖 @run_time 等同于执行test=run_time(test),run_time(test)返回的是wrapper的地址
# def test():
# time.sleep(3)
# print('test run over')
#
# test() #test() 执行的是wrapper()
#
# test run over
# 运行时间是3.0000040531158447
#
# import time
#
# def run_times(func):
# def wrapper(*args):
# star_time = time.time()
# func(*args)
# stop_time = time.time()
# print("运行时间是%s" %(stop_time - star_time))
# return wrapper
#
# @run_times
# def add(*args):
# res=0
# for i in args:
# time.sleep(1)
# res+=i
# print(res)
# add(1,2,3,4,5,6,7,8,9,10)
#
#
# 运行时间是10.000013828277588
python3.7 装饰器的更多相关文章
- (转)Python3.5——装饰器及应用详解
原文:https://blog.csdn.net/loveliuzz/article/details/77853346 Python3.5——装饰器及应用详解(下)----https://blog.c ...
- python3练习-装饰器
在廖雪峰的官方网站学习装饰器章节时,初步理解类似与面向切面编程.记录一下自己的课后习题解法. 问题: 请编写一个decorator,能在函数调用的前后打印出'begin call'和'end call ...
- Python3.5:装饰器的使用
在Python里面函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数,简单来说函数也是变量也可以作文函数的参数 >>> def funA(): ... pr ...
- python3之装饰器
1.装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处 ...
- python3之装饰器修复技术@wraps
普通函数 def f(): """ 这是一个用来测试装饰器修复技术的函数 """ print("哈哈哈") if __n ...
- Python3中装饰器的使用
较为复杂的装饰器使用: user,passwd = 'hjc',111111 def auth(type): print('auth type:',type) def outwrapper(func) ...
- python3 使用装饰器,及函数作为参数
#装饰import typesdef shucai(n): print('蔬菜价格7') if type(n)==types.FunctionType: return n()+7 return n+7 ...
- 【python3】装饰器
参考文章: 理解Python装饰器(Decorator) 关键点: 写装饰器一定要搞定楚函数名后面带小括号和不带小括号的含义.带小括号,表示调用这个函数,而不带小括号,则表示的是该函数引用地址 简单装 ...
- python3中装饰器的用法总结
装饰器预备知识点 1 函数赋值给一个变量 函数名可以像普通变量一样赋值给另一个变量. def test(): print("i am just a test function") ...
随机推荐
- java编程如何实现多条2017-08-08 22:10:00.0这样的时间数据,相差多少天?(隔24小时为相差1天,否则为0天)
不多说,直接上干货! 这是yyyy-MM-dd HH:mm:ss.S GetIntervalDays.java package zhouls.bigdata.DataFeatureSelect ...
- FTP连接报530 User 用户名 cannot log in home directory inaccessible的解决方法
在server 2003新建ftp用户并开启IIS的Ftp功能之后,有时在连接这个ftp的时候会出现530 User 用户名 cannot log in home directory inaccess ...
- magento新增商品属性以及将属性加入Flat table
magento的EAV模型非常强大且灵活,但是如果不做优化的话,性能会非常低,因为attributes都存放在附表里,要获取一个entity的attribute,需要表联结一次,如果需要获取多条att ...
- Cocos2d-x v3.1 安装图文教程(二)
Cocos2d-x v3.1 安装图文教程(二) 如果我们需要在Android平台上运行就必须安装android的SDK,如果我们只想在window上运行就只需要安装Cocos2d-x就行了.当 ...
- uvm_tlm——TLM1事务级建模方法(一)
TLM(事务级建模方法,Transaction-level modeling)是一种高级的数字系统模型化方法,它将模型间的通信细节与函数单元或通信架构的细节分离开来.通信机制(如总线或者FIFO)被建 ...
- ADO数据库编程详解(C++)----初级入门篇
一.概述 ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过 OLE DB提供者对在数据库 ...
- javascript字符串格式化string.format
String.prototype.format = function () { var values = arguments; return this.replace(/\{(\d+)\}/g, fu ...
- pat乙级1050螺旋矩阵
1.用vector建立二维数组: vector<vector<int>> arr(rows); ; i < rows; i++) arr[i].resize(cols); ...
- php之cURL惯用
1.php cURL的强大:PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器.使用各种协议.libcurl 目前支持的协议有 http.https.ft ...
- Using an Image for the Layer’s Content
Using an Image for the Layer’s Content Because a layer is just a container for managing a bitmap ima ...