python中闭包

python

  • 函数作为返回值

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

一个求和函数:

1 def sum(x,y):

2 return x+y

但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数!

1 def lazy_sum():

2 def sum(x,y):

3 return x+y

4 return sum

5

6 new_sum=lazy_sum()

new_sum不会求和,而是得到了这个求和的函数。当你需要用到求和的时候,调用就行了:new_sum(1,2),这种函数延迟执行做法的意义是什么呢?可以参考下python里的经典语法糖,装饰器

 1 def timethis(func):

2 def wrapper(*args,**kwargs):

3 start=time.time()

4 result=func(*args,**kwargs)

5 end=time.time()

6 print(func.__name__,end-start)

7 return result

8 return wrapper

9

10 @timethis

11 def countdown(n):

12 while n>0:

13 n-=1

14

15 countdown(100000000)

@timethis作为装饰器,不能是每次我定义新函数的时候,就执行一次它,而是我定义好这个新函数countdown,并且调用的这个函数的时候,才希望同时执行装饰器这个函数。在这里,装饰器函数就用到了函数延迟执行的特性,所以装饰器函数是闭包函数来实现的,正是这个原因

以上是 python中闭包 的全部内容, 来源链接: utcz.com/z/386613.html

回到顶部