python装饰器一

2025-10-23 17:37:09

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装饰器一

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢