python之闭包

举报
chenyu 发表于 2021/07/26 23:29:59 2021/07/26
【摘要】 1  闭包概念 绑定了函数内部引用的所有变量,把它引用的东西都放在一个上下文中“包”了起来         2 闭包的Demo理解 需求:比如我们要实现2个函数,每个函数有个参数,然后现在需要实现这2个函数参数的相加功能   1) 不用闭包python普通实现 #!/usr/bin/env pyt...

1  闭包概念

绑定了函数内部引用的所有变量,把它引用的东西都放在一个上下文中“包”了起来

 

 

 

 

2 闭包的Demo理解

需求:比如我们要实现2个函数,每个函数有个参数,然后现在需要实现这2个函数参数的相加功能

 

1) 不用闭包python普通实现


  
  1. #!/usr/bin/env python
  2. def plus_first(first):
  3. return first;
  4. def plus_second(second):
  5. return second;
  6. if __name__ == "__main__":
  7. first = plus_first(150);
  8. second = plus_second(200);
  9. result = first + second;
  10. print result

结果:350

 

2) 用闭包python实现


  
  1. #!/usr/bin/env python
  2. def plus_first(first):
  3. def plus_second(second):
  4. return first + second;
  5. return plus_second;
  6. if __name__ == "__main__":
  7. plus_second = plus_first(100);
  8. result = plus_second(200);
  9. print result

结果:400

上面的plus_first就是一个闭包,plus_second可以理解为一个匿名函数

 

3) 用lambda表达式实现


  
  1. #!/usr/bin/env python
  2. def plus_first(first):
  3. return lambda second1:first + second1
  4. if __name__ == "__main__":
  5. plus_second = plus_first(200);
  6. result = plus_second(200);
  7. print result

结果:400

 

 

 

总结:

通过闭包可以将n个函数相互连接起来,闭包是函数式编程的灵活、是函数式编程的核心。

 

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/84451196

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。