定义:本质上就是个函数,(装饰器其他函数)就是为了给其他函数添加附加功能

原则:1.不能修改被装饰的函数的源代码

2.不能修改被装饰的函数的调用方式

 #-*-coding:utf-8-*-
1 import time
def timer(hello):
def func(*args,**kwargs): #函数传参,不限个数。
start = time.time()
hello(*args,**kwargs) #函数传参,不限个数。
end = time.time()
print("运行时间:%s"%(end - start))
return func
@timer
def hello():
time.sleep(2)
print("nihao")
hello()

注:装饰器得写在被装饰函数的上面。

小实验:密码验证

#-*-coding:utf-8-*-
import time
user = {                           #存储用户名和密码
"luozeng":'',
"xuemanfei":'',
"xutian":''
} def yanzheng(hello):
def func(*args,**kwargs):
start = time.time()
username = input("请输入用户:").strip() #用户输入
password = input("请输入密码:").strip()
if username in user and password == user[username]: #用户名和密码验证
print("登陆成功")
hello(*args,**kwargs)
else:
exit("用户名或密码错误!")
end = time.time()
print("运行时间:%s"%(end - start))
return func
@yanzheng
def hello():
print("你好!")
hello()

python装饰器学习笔记的更多相关文章

  1. Python 装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...

  2. (转载)Python装饰器学习

    转载出处:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方 ...

  3. Python装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 ? 1 2 3 4 5 6 7 8 # -*- ...

  4. Python 装饰器学习心得

    最近打算重新开始记录自己的学习过程,于是就捡起被自己废弃了一年多的博客.这篇学习笔记主要是记录近来看的有关Python装饰器的东西. 0. 什么是装饰器? 本质上来说,装饰器其实就是一个特殊功能的函数 ...

  5. python 装饰器学习(decorator)

    最近看到有个装饰器的例子,没看懂, #!/usr/bin/python class decorator(object): def __init__(self,f): print "initi ...

  6. python装饰器学习详解-函数部分

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 最近阅读<流畅的python>看见其用函数写装饰器部分写的很好,想写一些自己的读书笔记. ...

  7. Python装饰器学习(九步入门)

    这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 ? 1 2 3 4 5 6 7 8 # -*- coding:gbk -*- '''示 ...

  8. Python 装饰器学习以及实际使用场景实践

    前言 前几天在看Flask框架,对于非常神奇的@语法,不是非常的理解,回来补装饰器的功课.阅读很多的关于装饰器的文章,自己整理一下,适合自己的思路的方法和例子,与大家分享. app = Flask(_ ...

  9. python装饰器见解笔记

    def zsq(fun): def zsq_n(*args,**kwargs) print('这是装饰器需要运行内容') r = fun(*args,**kwargs) print('在被装饰函数执行 ...

随机推荐

  1. day 58 关于bootstrap

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. day 42 mysql 数据类型

    mysql 数据类型   数据类型 truncate t1 (删除表) # 无符号类型 alter table t1 modify id tinyint unsigned (表里有值,不能直接改) d ...

  3. nginx 更改用户组

    为什么要更改 Nginx 服务的默认用户:就像更改 ssh 的默认 22 端口一样,增加安全性,Nginx 服务的默认用户是 nobody ,我们更改为 nginx 1) 添加 nginx 用户 us ...

  4. php优秀框架codeigniter学习系列——index.php

    程序流程图 先来看看CI框架运行的程序流程图. 从图中我们 看到,index.php作为唯一的入口文件,会初始化CI框架运行所需的基本资源. 路由器(Routing)会根据http请求,确定如何处理: ...

  5. ubantu安装python3虚拟环境

    Ubuntu安装python3虚拟环境 安装虚拟环境 步骤: 打开Linux终端(快捷键Ctrl+Alt+T),输入命令: sudo apt install python-virtualenv sud ...

  6. certbot自动在ubuntu16.04的nginx上部署let's encrypt免费ssl证书

    终结CA收费时代,让互联网更安全 Install On Ubuntu systems, the Certbot team maintains a PPA. Once you add it to you ...

  7. web-view中下载微信头像跨域解决方案

    let img = new Image() // 头像地址后边添加时间戳可解决跨域问题 555. img.src = 'http://wx.qlogo.cn/mmopen/vi_32/RnLIHfXi ...

  8. weex--手机调试

    Weex Playground 我的是小米应用市场,没有搜索到,不过这是官方的二维码,我是扫描这个二维码下载的.

  9. NOI-1.3-11-计算浮点数相除的余数

    11:计算浮点数相除的余数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 计算两个双精度浮点数a和b的相除的余数,a和b都是正数的.这里余数(r)的定义是: ...

  10. 牛客国庆集训派对Day4 I-连通块计数(思维,组合数学)

    链接:https://www.nowcoder.com/acm/contest/204/I 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...