day14总结
装饰器
"""
1、什么是装饰器
器指的是工具/功能
装饰指的是为被装饰对象添加额外的功能 大白话:定义装饰器就是定义了一个函数,该函数就是用来为其他函数添加额外的功能的 2、为何要用装饰器
程序的开发需要遵循一个原则:开放封闭原则
开放:指的是对拓展功能开放
封闭:指的是对修改源代码封闭 装饰器就是在不修改被装饰对象源代码以及调用方式的前提为被装饰对象添加上新功能 3、如何用装饰器 """
# 1、装饰器初探
'''
import time def index(x, y):
time.sleep(3)
print('index===>', x, y) # index(1,2) def home(name):
time.sleep(2)
print('home====>', name) # home("egon") def outter():
x = index def wrapper(a, b):
start_time = time.time()
x(a, b)
stop_time = time.time()
print("run time is :%s" % (stop_time - start_time)) return wrapper # 千万不要加括号 index = outter() # f=wrapper index(1, 2) # wrapper()
''' # 2、装饰器改进1
"""
import time def index(x, y):
time.sleep(3)
print('index===>', x, y) def home(name):
time.sleep(2)
print('home====>', name) def outter(x):
# x = home
def wrapper(*args,**kargs):
start_time = time.time()
x(*args,**kargs) # x("egon")
stop_time = time.time()
print("run time is :%s" % (stop_time - start_time))
return wrapper # 千万不要加括号 index = outter(index) # index=wrapper
home = outter(home) # home=wrapper index(1, 2) # wrapper(1,2)
home("egon") # wrapper("egon")
""" # 3、装饰器改进2
"""
import time def index(x, y):
time.sleep(3)
print('index===>', x, y)
return 456 def home(name):
time.sleep(2)
print('home====>', name)
return 123 def outter(x):
# x = home
def wrapper(*args, **kargs):
start_time = time.time()
res = x(*args, **kargs) # x("egon")
stop_time = time.time()
print("run time is :%s" % (stop_time - start_time))
return res
return wrapper # 千万不要加括号 index = outter(index) # index=wrapper
home = outter(home) # home=wrapper res1 = index(1, 2) # wrapper(1,2)
res2 = home("egon") # wrapper("egon")
print("====>",res1)
print("====>",res2) """ 装饰器语法糖
# 4、语法糖
"""
import time def outter(x):
# x = home
def wrapper(*args, **kargs):
start_time = time.time()
res = x(*args, **kargs) # x("egon")
stop_time = time.time()
print("run time is :%s" % (stop_time - start_time))
return res return wrapper # 千万不要加括号 @outter # index = outter(index) # index=wrapper
def index(x, y):
time.sleep(3)
print('index===>', x, y)
return 456 @outter # home = outter(home) # home=wrapper
def home(name):
time.sleep(2)
print('home====>', name)
return 123 res1 = index(1, 2) # wrapper(1,2)
res2 = home("egon") # wrapper("egon")
print("====>", res1)
print("====>", res2)
"""
import time # 5、装饰器的模板
"""
def outter(func):
def wrapper(*args, **kwargs):
res = func(*args, **kwargs)
return res
return wrapper def timmer(func):
def wrapper(*args, **kwargs):
start=time.time()
res = func(*args, **kwargs)
stop=time.time()
print(stop -start)
return res
return wrapper def auth(func):
def wrapper(*args, **kwargs):
name = input("请输入您的账号:").strip()
pwd = input("请输入您的账号:").strip()
if name == "egon" and pwd == "123":
print('登录成功')
res = func(*args, **kwargs)
return res
else:
print("账号密码错误")
return wrapper @auth
def index(x, y):
time.sleep(1)
print('index===>', x, y)
return 456 @auth
def home(name):
time.sleep(0.5)
print('home====>', name)
return 123 index(1,2)
home("egon")
""" # 最完整的模板
from functools import wraps def wrapper(f):
@wraps(f)
def inner(*args, **kwargs):
res = f(*args, **kwargs)
return res return inner 闭包函数查看文档
# 6、wraps
'''
from functools import wraps def timmer(func):
@wraps(func)
def wrapper(*args, **kwargs):
start=time.time()
res = func(*args, **kwargs)
stop=time.time()
print(stop -start)
return res
# wrapper.__name__ = func.__name__
# wrapper.__doc__ = func.__doc__
return wrapper @timmer # index=timmer(index) # index=wrapper
def index(x, y):
"""
这是index函数的文档注释
"""
time.sleep(1)
print('index===>', x, y)
return 456 # index(1,2)
# print(index.__name__)
help(index)
'''
day14总结的更多相关文章
- python_way day14 CSS
python_way day14 CSS 层叠样式表 一.CSS作用域: 二.css标签选择器 三.css样式 一.css作用域: 基本用法:style="样式" <body ...
- Spark Streaming揭秘 Day14 State状态管理
Spark Streaming揭秘 Day14 State状态管理 今天让我们进入下SparkStreaming的一个非常好用的功能,也就State相关的操作.State是SparkStreaming ...
- Python之路,Day14 - It's time for Django
Python之路,Day14 - It's time for Django 本节内容 Django流程介绍 Django url Django view Django models Django ...
- 【JAVA零基础入门系列】Day14 Java对象的克隆
今天要介绍一个概念,对象的克隆.本篇有一定难度,请先做好心理准备.看不懂的话可以多看两遍,还是不懂的话,可以在下方留言,我会看情况进行修改和补充. 克隆,自然就是将对象重新复制一份,那为什么要用克隆呢 ...
- 11.1 正睿停课训练 Day14
目录 2018.11.1 正睿停课训练 Day14 A 字符串 B 取数游戏(贪心) C 魔方(模拟) 考试代码 B C 2018.11.1 正睿停课训练 Day14 时间:3.5h 期望得分:100 ...
- python学习 day14 (3月19日)----
04 json # 1. 用于多种语言 交互 编程语言通用数据 # 内置的 不需要安装直接导入使用 import json # 导入 # # dumps loads dump load # dic = ...
- day13,day14
day13 迭代器 什么是迭代器? 迭代:是一个重复的过程,每一次重复,都是基于上一次的结果而进行的 器:迭代取值的工具 为何要用迭代器? 迭代器提供了一种通用的不依赖于索引的迭代取值方式 如何用迭代 ...
- day14(xml 编写及解析)
编写 xml的组成: 1.文档的声明 <?xml version='1.0' encoding='UTF-8' standalone='yes'> xml 表示标签的名字 encoding ...
- python开发学习-day14(jquery、ajax等)
s12-20160421-day14 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- day14(编码实战-用户登录注册)
day14 案例:用户注册登录 要求:3层框架,使用验证码 功能分析 注册 登录 1.1 JSP页面 regist.jsp 注册表单:用户输入注册信息: 回显错误信息:当注册失败时,显示错误信 ...
随机推荐
- vue对象数组数据变化,页面不渲染
很多时候,我们习惯于这样操作数组和对象: data() { // data数据 return { arr: [1,2,3], obj:{ a: 1, b: 2 } }; }, // 数据更新 数组视图 ...
- akka-typed(6) - cluster:group router, cluster-load-balancing
先谈谈akka-typed的router actor.route 分pool router, group router两类.我们先看看pool-router的使用示范: val pool = Rout ...
- WDCP3.3中多PHP版本安装方法,以及安装遇到的问题
[多版本php安装] 安装方法如下: wget http://down.wdlinux.cn/in/phps.sh sh phps.sh (共支持8个版本的PHP,如5.2.17/5.3.29/5.4 ...
- D2大全
年初看到cnblogs上有人说看这本旧书,自己也只是瞟了下,后来在看些OOP东西时,想想没事也看看老古董,于是网购了一本电子版可参考下,它们是怎么一步步来,还没来得及多看,贴图于此.
- 图解KMP以及next数组的求法
在计算机科学中,Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个主文本字符串S内查找一个模式串P的出现位置.此算法通过运用对这个模式串在不匹配时本身就包含足够的信息来确定 ...
- CentOS Linux release 7.7.1908 (Core)--rabbitmq安装
1.连接服务器,输入账号和密码,密码输入的时候是看不见的,只管输就行,然后回车. 2.安装Erlang,RabbitMQ是用这门语言写的,所以要安装他. 3.安装filezilia就是win和linu ...
- 03 . Jenkins构建之代码扫描
Sonar简介 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不 ...
- Shell脚本 概括
Shell脚本的管理 shell 脚本是linux命令的集合 介于操作系统内核与用户之间,赋值解释命令行 Shell的作用及常见种类 登录Shell 指用户每次登录系统后自动加载的Shell程序,大多 ...
- 学习Linux必须掌握的一个知识-i节点
linux文件系统是Linux系统的心脏部分,提供了层次结构的目录和文件.文件系统将磁盘空间划分为每1024个字节一组,称为块(也有用512字节为一块的,如:SCOXENIX).编号从0到整个磁盘的最 ...
- 他被称为"中国第一程序员",微软得不到他曾想毁了他,如今拜入武当修道
GitHub 15.4k Star 的Java工程师成神之路,不来了解一下吗! GitHub 15.4k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 15.4k Star ...