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") ...
随机推荐
- [PHP]使用日志进行调试
两种方法: 1.利用自定义函数: //写日志,打印字符串function writelog($str){ $open=fopen("log.txt","a+") ...
- Java Web项目在Mac系统上启动时提示nodename nor servname provided的解决办法
今天在Mac系统上启动Java Web项目的时候,提示了Java.net.UnknownHostException: yangxiaomindeMacBook-Pro.local nodename n ...
- ADO学习笔记之注入漏洞与参数化查询
ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con = new SqlConne ...
- [技术交流ppt]babel7中preset-env的优化使用
备注 pdf在这里
- OAuth相关知识
什么是OAuth认证 1.一种安全认证的协议;2.协议为用户资源的授权提供了一个安全的.开放又简易的标准;3.OAuth的授权不会使第三方触及到用户的账户信息(例如用户名和密码) 网址:www.oau ...
- js学习的一些想法(有一些来自网络)
javascript开发最佳实践学习 1.给变量和函数命名--变量名和函数名尽量简短 好的变量命名应该是简短易懂的,还有需要避免的陷阱就是在命名中将数值与功能结合. 匈牙利命名法就是一个不错的选择,也 ...
- Python开发环境Wing IDE如何调试进程异常报告
Wing IDE的调试器所报告的任何异常,都会在调试器以外的任何代码运行事件中展示出来. 通过使用Debug工具或者是Debug菜单中的Start / Continue继续调试过程的异常检测. Win ...
- 软件测试Lab 1 Junit and Eclemma
首先安装eclipse 然后下载hamcrest-core-1.3.jar,下载地址:http://mvnrepository.com/artifact/org.hamcrest/hamcrest-c ...
- 【Shell脚本学习22】Shell 函数:Shell函数返回值、删除函数、在终端调用函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...
- Spring MVC中注解的简介
参考网址: https://blog.csdn.net/a67474506/article/details/46361195 @RequestMapping映射请求 SpringMVC 使用 @Re ...