这是一篇关于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.递归 递归就是函数自身调用自身的行为。(如果有兴趣,我可以单独做一期) 那么感谢大家的阅读,我会立马赶下一期的。 |