函数的嵌套
我们学过选择结构和循环结构的嵌套,现在再来学习函数的嵌套就会简单的多。
1.函数嵌套基本语法
函数嵌套的一种是在定义函数时,内部再定义一个函数,基本语法如下:
在函数内部定义的函数,必须在内部调用,否则没有意义。因为这里的内部函数fun02()只在外部函数fun01()内定义,在外面无法使用,所以如果不在外部函数fun01()内调用这个函数,那么它将永远无法执行。
输出结果:
外部函数outfun
内部函数infun
如果没有在内部函数调用infun函数,而是在最外面调用,就会报错。
总的来说,在函数内部嵌套函数时,内部函数的定义和调用都要在内部完成。
函数嵌套的另外一种形式是同时定义好N个函数,在一个函数中去调用其他函数。
我们可以根据需要去增加参数和返回值,实现函数之间的任意嵌套调用。
输出结果:
9 64
该例事先定义两个带有参数和返回值的函数,功能分别是求一个数的平方和立方,然后在一个新的函数内部调用并输出,最后得到3的平方和4的立方的值。
以上两种函数嵌套最主要的区别在于第一种的内嵌函数只为该外部函数服务,如果需要多次使用则使用第二种嵌套方式。第一种嵌套的好处在于可以隐藏数据,外部无法访问内部的嵌套函数。
2.函数嵌套的基本使用
例:设计一个函数,判断两个数的大小,使用函数嵌套的方式。
虽然我们以前学过的方法可以轻松实现此功能,但是请各位使用函数嵌套的方式来体验这种用法。
3.闭包函数
当我们第一种函数的嵌套形式中的外层函数返回值是内层函数的时候,该函数称为闭包函数。基本形式如下:
这里最后一行调用outfun函数的第一个实参对应的是outfun()的形参,传递计算后返回值是infun函数,outfun调用语句的第二个括号实际上是在调用infun函数,实参传递到内部函数infun()的形参,第7行也可以分步写为如下两行代码,效果相同。
请看下面代码:
输出结果:
6
8
10
在定义完闭包函数outfun()后,先使用一个变量f接收这个闭包函数的返回值,即infun()函数,同时给形参a传递了实参2,对于infun()函数来说,函数内部只剩下一个变量x,其中的变量a已经被2锁定,接下来再调用f(x)就相当于infun(x),传递参数3,4,5得到结果6,8,10。
闭包函数可以做的功能,基本上传统方法也可以做,但是使用闭包函数确能提高程序的运行效率,是大家成为高手需要迈过的重要一步。
本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/Python/2020/0118/523.html