python装饰器一

 时间:2026-02-15 18:57:05

1、我们先来看看python中的普通函数,如下所示我们先定义一个函数 mydecorators:

def mydecorators(role):    return 'decorators  '+rol

print(mydecorators(role='people'))

详细如下图所示

python装饰器一

python装饰器一

2、我们还可以将函数赋值给一个变量方便调用,然后将原来的函数删除,如下在步骤一基础上:

def mydecorators(role):    return 'decorators  '+roleprint(mydecorators(role='people'))decorators=mydecorators(role='moon') 赋值给参数print(decorators)  新参数调用函数del mydecorators  删除函数print(mydecorators(role='people')) 调用删除函数

print(decorators)

如下图所示,可以看出 删除后在调用函数报错,如果你把print(mydecorators(role='people'))  这句注释了就没有报错了

python装饰器一

python装饰器一

3、接下来我们,在一个函数中定义一个子函数,如下所示我们通过例子来看看

我们首先定义一个带子函数的函数

def mydecorators(role):    def people():        print 'function is people'  子方法一    def moon():        print  'function is moon'   子方法二    if role=='people':        people()    else:        moon()    return 'function is mydecorators'  

如图所示

python装饰器一

4、然后我们调用它,看看怎么运行的,如下所示:

print(mydecorators(role='people'))

观察输出:

function is people

function is mydecorators

我们发现 mydecorators 和people两个方法被调用了,我们在外层调用下 people 和moon方法试试,发现报错,如图三,由此可以知内部方法是没法被直接调用的

python装饰器一

python装饰器一

python装饰器一

5、我们还可以对四步骤中的函数进行修改,让它只返回一个值,如下所示:

def mydecorators(role):    def people():        return 'function is people'    def moon():        return  'function is moon'    if role=='people':        return people    else:        return moon   可以看出通过条件判断该函数只有一个返回值

python装饰器一

6、我们调用以上函数,我们会发现它只有一个返回值了,如下:

print(mydecorators(role='people'))print(mydecorators)print(mydecorators(role='moon'))

输出结果:

function is people

<function mydecorators at 0x0000000002C69908>

function is moon

python装饰器一

python装饰器一

7、细心的朋友会发现,输出的函数当没加参数时候就输出 该函数

如 print(mydecorators) 输出

<function mydecorators at 0x0000000002C69908>

这节我们先介绍函数的基础定义,下一节我们在接着介绍 python  decorators 

python装饰器一

  • 怎么在anaconda里面实现python2和3的切换?
  • 如何注册GitHub账号?
  • PyCharm安装教程
  • 什么是“堆”,"栈","堆栈","队列",它们的区别?
  • 如何安装TensorFlow2.0?
  • 热门搜索
    子欲养而亲不待的意思 ipo过会是什么意思 什么牌子的花洒好 什么让生活更美好作文600字 看房子需要注意什么 降息意味着什么 矫情的意思 什么意思韩语 flat是什么意思 精巧的意思