匿名函数和闭包的区别

在学习python基础中对于匿名函数和闭包等只是有不太明白的地方,分不清他们的区别,所以整理下方便后期复习提升。反思:对于零碎的python基础知识,一定要牢记,多看多敲代码,一回生二回熟,熟能生巧。

一、匿名函数

所谓匿名就是不需要函数表达式

lambda x : x*x

关键字lambda表示匿名函数,冒号前面的x表示函数参数。

匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。

小结:

匿名函数:lambda表达式:通过一个表达式实现函数功能
基本语法:lambda 参数列表:表达式语句
参数列表:用来给表达式传递数据
表达式语句:计算表达式,计算结果会自动输出
注意事项:lambda表达式,主要是用来替代功能简单的函数的!提高代码的简洁性
不要滥用!大量使用lambda表达式会造成代码可读性的严重下降!

 

二、闭包

1、定义:内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数。

2、创建闭包函数:

  如果在一个内部函数里对外部作用域(但不是全局作用域)的变量进行引用,内部函数称为闭包(closure)

------闭包函数必须有内嵌函数
------内嵌函数需要引用该嵌套函数上一级namespace中的变量
------闭包函数必须返回内嵌函数

 

小结:

闭包就是函数里面嵌套一个函数
因为函数的出现,导致变量出现了分化:全局变量、局部变量
全局变量:当前模块中任意地方都能访问!
局部变量:当前函数中可以操作
~全局变量-局部变量:变量-在函数外部调用访问:

posted @ 2019-11-26 21:06  python厚积薄发  阅读(1529)  评论(0编辑  收藏  举报