美文网首页
python基础-装饰器

python基础-装饰器

作者: 爱跳的兔子 | 来源:发表于2018-10-24 23:39 被阅读0次

记录自己学习py基础的点点滴滴

装饰器

  • 由浅入深,先定义一个函数,把这个函数赋值给一个变量,然后可以通过变量直接调用函数
def woami():
    print('xiaoyang')

f = woami
f()
xiaoyang
  • 函数有个name属性,可以看到赋值给变量并没有改变函数的name属性
woami.__name__
'woami'
woami.__name__
'woami'
  • 现在我们要增强woami函数的功能,或者增强任意一个函数的功能,在不改变函数定义的情况下,这种在代码运行期间动态增加函数功能的方式称之为装饰器(decorator)
  • 事实上装饰器在做的事,是接受当前函数作为参数,返回一个新的函数出来,本质上是一个返回函数的高阶函数
def log(func):
        def new(*args, **kw):
                print('call %s:'  % func.__name__)
                return func(*args, **kw)
        return new
  • 可以看出装饰器,就是上面说的一个函数而已,要让他起到上述装饰器真正的作用需要使用
    @ 我们就称它为修饰符号吧
@log
def woami():
        print('xiaoyang')

woami()
call woami():
xiaoyang
  • @log的作用等同于下面这行
woami = log(woami)
  • 请注意装饰器返回了一个新函数new,所以被装饰器修饰过的woami,已经不是原来的woami了,而是一个新的函数,我们来验证一下
woami.__name__
'new'

很神奇对吧,别慌,我们接着看,再来修饰一个函数玩玩吧

@log
def again():
        print('又来~')

again()
call again:
又来

可以看到,我们之前定义好的返回函数log,在定义任何函数之前@一下,就可以起到修饰的作用了。很好,掌握了装饰器的初级用法,很开心。。。

相关文章

  • python 基础 07 装饰器

    python 基础 07 1. 装饰器

  • Day04 - Python基础4

    Day04的课程要点记录详细教程地址:Day4 - Python基础4 | python装饰器 一、装饰器 1.1...

  • 装饰器五部曲

    听说你学不会装饰器?Python基础之装饰器五部曲,带你轻轻松松学会装饰器 装饰器(decorator)是Pyth...

  • Python装饰器(Decorator)完全指南-进阶篇

    Decorator进阶指南 在[python装饰器完全指南基础篇中],我们已经知道了python中的装饰器本质上只...

  • Python装饰器学习

    Python装饰器学习 Python装饰器学习(九步入门)基础部分根据此文来学习的,接下来将根据此文内容进行整理,...

  • python基础-装饰器

    记录自己学习py基础的点点滴滴 装饰器 由浅入深,先定义一个函数,把这个函数赋值给一个变量,然后可以通过变量直接调...

  • Python基础 装饰器

    装饰器 python装饰器个人的理解: 在原本函数基础上,在不改变原函数名和原函数代码的情况下,增加对这个函数的的...

  • python (类/函数)对一个函数应用多个装饰器 执行过程

    网上很多讲解单个python 装饰器的文章,基础知识我们简单描述。 首先了解装饰器是用来干什么的,装饰器可以增加函...

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

  • python学习线路

    阶段一:基础阶段Python语言基础 · 环境搭建与配置· 变量和数据类型· 编程基础· 装饰器· gui介绍简易...

网友评论

      本文标题:python基础-装饰器

      本文链接:https://www.haomeiwen.com/subject/iwyftqtx.html