这是一篇关于python的文章
我们将继续学习写一个模块,这是最后关于介绍函数的文章。
事不宜迟,我们现在开始。
1.内嵌函数
简单来说“内嵌函数”就是在函数里定义了函数。先来看看一个例子吧:
虽然这看起来并没有用,但只要合理运用,它可以发挥不小的作用呢。
还有就是作用域:在函数内定义的函数是不可以在在外部调用的。
2.闭包
闭包是各种语言函数结构的一种。而python的语法结构请参见下面这个图。
概念:如果在一个内部函数里(就是X)对外部作用域(不是全局哟)的变量进行引用(x就是被引用的变量,x在外部作用域X里,但不在全局里),则这个内部函数就是闭包。
注意:同内嵌函数一样,你是不能在外部调用它的
这个报错与之前讲全局变量是一样的,因为python外认为部函数x是局部变量时,外部变量x就被‘屏蔽’了,所以根本找不到x的值。
但有两个解决方法:
(1)用容器(字符串、列表、元祖...)存放是一个好方法。因为容器并不是存放在栈里,所以容器就不会被‘屏蔽’。
(2)用上python3特有的关键字nonlocal就可以了。
3.lambda表达式
lambda是一个关键字用来创建匿名函数
特点:
(1)用python写一些脚本时,用lambda定义函数可以省去定义过程。这使得代码变得异常精简
(2)对于那些只有调用一两次的函数,可以用lambda解决。而且起名字也不在变得那么麻烦了
(3)再有就是可读性,一般函数要到开头寻找,而lambda可以省去这样的步奏
4.关于函数的两个BIF
4.1.filter()
filter是一个筛选器。它有两个值第一个值不是必要的,该值是函数名。第二值是可迭代值。由这个可迭代值的每一个值作为函数的参数,由返回参数为Ture时作为filter的返回值。(在不设置情况下,可迭代值中为True的值将为返回的值)当然filter返回的值必须由list\tuple\...转换为可视的值。
4.2.map()
和filter一样只不过返回的序列是函数直接返回的值
5.递归
递归就是函数自身调用自身的行为。(如果有兴趣,我可以单独做一期)
那么感谢大家的阅读,我会立马赶下一期的。