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

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

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

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

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

小实验:密码验证

  1. #-*-coding:utf-8-*-
    import time
  1. user = { #存储用户名和密码
  2. "luozeng":'',
  3. "xuemanfei":'',
  4. "xutian":''
  5. }
  6. def yanzheng(hello):
  7. def func(*args,**kwargs):
  8. start = time.time()
  9. username = input("请输入用户:").strip() #用户输入
  10. password = input("请输入密码:").strip()
  11. if username in user and password == user[username]: #用户名和密码验证
  12. print("登陆成功")
  13. hello(*args,**kwargs)
  14. else:
  15. exit("用户名或密码错误!")
  16. end = time.time()
  17. print("运行时间:%s"%(end - start))
  18. return func
  19. @yanzheng
  20. def hello():
  21. print("你好!")
  22. 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. springsecurity的退出登陆

    登陆成功就有退出,退出的实质就是让session失效 要实现退出登录只需要在spring-security配置文件中在加一行代码就可以了 <!--退出登陆--> <security: ...

  2. 搭建Django项目

    命令行搭建Django项目 1.安装django 在指定解释器环境下安装django 1.11.9 在真实python3环境下: pip3 install django==1.11.9 在虚拟环境下: ...

  3. Oralce 11g新特性 转载

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

  4. 删除掉str上下两行的空白字符(strip())

  5. Golang AES加密

    package main import ( "crypto/aes" "crypto/cipher" "fmt" "os" ...

  6. nwjs 解决手指可滑动问题

    package.json 中添加: "chromium-args": "--touch-events --enable-touch-drag-drop",

  7. Spring+CXF+Maven发布Webservice

    使用CXF发布WebService简单又快速,还可以与Spring集成,当Web容器启动时一起发布WebService服务.本例是简单的客户端给服务端发送订单信息,服务端返回订单转为json的字符串. ...

  8. Python学习笔记第九周

    目录: 一.基础概念 1.paramiko模块 2.进程与线程 1.进程 2.线程 3.进程与线程的区别 4.Python GIL 5.thread模块 6.Join与Daemon 7.线程锁(Mut ...

  9. socket模块粘包现象理解以及解决思路

    粘包现象: 在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的.因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的 ...

  10. Bi-shoe and Phi-shoe

    欧拉函数中的性质 Φ(p)=p-1,p为素数.所以这个题算是贪心+数论吧.每个Φ(p)=p-1:只要从p开始,找素数,那么一定有Φ(k)>=p-1;只有当p=k时,等号成立. #include ...