python教程 内部函数、闭包和装饰器

python中的内部函数、闭包和装饰器的比较

一:内部函数:

内部函数,即如果一个函数实现的功能单一,但这个单一的功能本身逻辑就非常复杂,那么可以在这个函数的内部再定义一个函数,从而降低逻辑和编码复杂度。

def move(x, y):

    def add(x, y):

        return x + y

    return add(x, y)

print(move(2,3))

二、闭包:

当使用内部函数中,外部定义的函数返回了内部函数的处理结果;

python还可以直接通过返回内部函数的函数名返回内部函数的定义,这就是闭包;

闭包返回了内部函数的定义,所以接收的变量名也接收了一个函数的定义,并不执行。

def move(x, y):

def add():

    print(x, y)

return add      #返回函数名,闭包

add = move(2, 3)    #调用闭包,返回内部函数的定义,但不执行

add()  #再次调用才开始执行

2 3

三、装饰器:

有时候,我们想给一个函数增加一些功能,但我们并不想改变这个函数的任何东西,如函数名、调用方式和内部代码,那我们就可以使用装饰器。

def timer(func):  #我是装饰函数

    def deco():  #我用闭包机制给原函数增加了代码

        print("我是要增加的第一行代码")

        func()  #我是原函数

        print("我是要增加的第二行代码")

    return deco  #我用闭包机制返回一个函数

#@timer是装饰器语句,这个语句也可以写成这样test1=timer(test1)

#@timer的意思是调用了上面的装饰函数,并将下面的原函数以参数传入

@timer

def test1():

    print("我是原函数")

test1()  #上面的仅仅是装饰,我才是执行

至此,我们就把python的基础知识学完了,在真正工作之前,我们还需要了解一下python常用的内部函数
欢迎收看:如何自学人工智能

猜你喜欢

转载自blog.csdn.net/eisenhowerlong/article/details/88366494
今日推荐