青少年python系列目录_老程序员115的博客-CSDN博客
从之前的文章了解循环嵌套与选择结构的嵌套,这些程序结构的嵌套使得我们有可能解决更为复杂的问题。在python中函数也是如此,有别与我们初学的函数,嵌套可以让我们创造更加高阶的函数,帮助我们处理更加复杂多变的问题,简化我们的程序结构。那么在高阶函数中,我们熟知的参数与返回值又会有着怎样的变化与不同?
1 函数的嵌套
python是允许创建嵌套函数的,也就是说我们可以在函数内部定义一个或者多个函数。我们把它们分为外函数和内函数。嵌套函数是为函数内部服务的,比如减少代码的重复,想要调用函数,要使用函数名,内函数也一样。如果不用函数名调用内函数,内函数就永远不会执行。
外函数内部调用内函数,即用函数名调用。
这样调用外函数也会执行内函数的代码块。
如果在函数外直接调用内函数,则程序运行会报告错误。
这是因为内外函数有着各自的作用域,函数的调用要符合函数的调用的规则。
2 函数的参数拓展
必备参数
函数调用时的数量,位置,参数类型必须和定义时的一致。
如例子中一样,如果此时传入的实参不是1与2,而是两个不同数据类型的参数,那么函数运行时就会报错,必备参数也叫位置参数,它对于形参与实参的数量,位置,参数类型都有很严格的规定。
关键字参数
通过定义关键字获取实参的值,与形参的顺序无关。
如例,关键字参数在实参传入时,会通过关联形参名来传值,此时python会自动按照参数名来匹配参数值,与必备参数相比,关键字参数对传参顺序没有要求,但依然严格要求传参的数据类型与数量。
默认参数
默认参数即在定义函数时为形参添加默认值,调用函数时,默认参数的值如果没有新传入,则被认为是默认值。
这和我们平常的密码设置很相像,在函数形参定义时就为形参设置一个默认值,当实参没有新值传入时,参数就会使用默认值。就像如果账户没有设置密码,那么就会自动设置为默认密码。
"函数"参数
函数也可以作为函数的参数
函数和其他变量是一样,变量是可以传递和修改值的,函数也可以作为变量,所以函数也可以作为函数的参数
在这个例子中我们可以清晰的看出,函数可以作为参数,参与另一个函数的定义。
3 函数的返回值拓展
我们知道,变量可以传递和修改值的,函数也是如此,所以函数不仅可以当作做参数,也可以作为返回值。
如例,内函数可以作为外函数的返回值被调用。
"return函数名()"调用内函数
return语句可以返回值与结束函数调用,也可以在嵌套函数中使用return语句来调用内函数,对于外函数来说,此时内函数相当于它的返回值,这样,我们在调用外函数时就可以一起调用内函数
"return函数名",调用内函数
如例,此时return func2后面并没有括号,意味着在此处并不是调用内函数func2(),而是,在返回func2()函数所在的位置,所以在函数外调用函数时,我们先调用外函数func1,通过return来返回内函数的位置,再增加括号,调用内函数.
总结
1、函数的嵌套
在一个函数中定义了另外一个函数。分为外函数和内函数
2、函数的参数拓展
必备参数、关键字参数、默认参数、“函数”参数
3、函数的返回值拓展
“函数”返回值、"return函数名()"调用内函数、"return函数名"调用内函数