python装饰器一
1、我们先来看看python中的普通函数,如下所示我们先定义一个函数mydecorators:def mydecorators(role): return 'decorators '+rolprint(mydecorators(role='people'))详细如下图所示


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')) 这句注释了就没有报错了


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' 如图所示

4、然后我们调用它,看看怎么运行的,如下所示:print(mydecorators(role='people'))观察输出:function is peoplefunction is mydecorators我们发现mydecorators和people两个方法被调用了,我们在外层调用下people和moon方法试试,发现报错,如图三,由此可以知内部方法是没法被直接调用的



5、我们还可以对四步骤中的函数进行修改,让它只返回一个值,如下所示:def mydecorators(role): def people(): return 'function is people' def moon(): return 'function is moon' if role=='people': return people else: return moon 可以看出通过条件判断该函数只有一个返回值

6、我们调用以上函数,我们会发现它只有一个返回值了,如下:print(mydecorators(role='people'))print(mydecorators)print(mydecorators(role='moon'))输出结果:function is people<function mydecorators at 0x0000000002C69908>function is moon


7、细心的朋友会发现,输出的函数当没加参数时候就输出该函数如print(mydecorators)输出<function mydecorators at 0x0000000002C69908>这节我们先介绍函数的基础定义,下一节我们在接着介绍python decorators
