Python被忽略的基础之装饰器

版权声明:博客内容原创,部分图片有可能来源于其他人的截图或者使用。本博客仅供学习 https://blog.csdn.net/gulang_luofeng/article/details/89337454

python基础之被忽视的知识点1

  • 装饰器的使用

    闭包函数:
    python是一种面向对象的编程语言,在python中一切皆对象,这样就使得变量所拥有的属性,函数也同样拥有。这样我们就可以理解在函数内创建一个函数的行为是完全合法的。这种函数被叫做内嵌函数,这种函数只可以在外部函数的作用域内被正常调用,在外部函数的作用域之外调用会报错;而如果内部函数里引用了外部函数里定义的对象(甚至是外层之外,但不是全局变量),那么此时内部函数就被称为闭包函数

    闭包实例:

      def count():
     	a = 1
        	b = 1
     	def sum():
     		c = 1
     		return a + c  # a - 自由变量
        return sum
    

    概念:
    python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象;装饰器函数的外部函数传入我要装饰的函数名字,返回经过修饰后函数的名字;内层函数(闭包)负责修饰被装饰函数

    重点:

     实质: 是一个函数
     参数:是你要装饰的函数名(并非函数调用)
     返回:是装饰完的函数名(也非函数调用)
     作用:为已经存在的对象添加额外的功能
     特点:不需要对对象做任何的代码上的变动
    

    作用:
    它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用

    实例1-函数装饰器:

     # 装饰器
     def Decorator(func):
     	#这个就是一个闭包函数,在这里面做一些你想做的事情,并不影响其他功能
     	def bibao():
         	#在闭包函数中对要装饰的函数进行调用
         	func()
         	print("2019年4月1日,用户访问了该站点")  # 这句话其实就是装饰器增加的内容,增加了操作后的访问记录
     	return bibao
     
     #需要装饰的函数
     def login():
     	#比如登录,跳转页面等操作
     	print("我登录上了" )
     	pass
     
     #函数被装饰
     login=Decorator(login)
     
     # #调用查看效果
     login()
    

    这个简易的装饰器就可以给任何一个操作进行访问记录的添加,节省很多时间和精力

猜你喜欢

转载自blog.csdn.net/gulang_luofeng/article/details/89337454
0条评论
添加一条新回复