您现在所在的位置:首页 >学习资源 > Python全栈+人工智能入门教材 > Python基础入门教程19:再说函数 那些不得不知道的事儿

Python基础入门教程19:再说函数 那些不得不知道的事儿

来源:奇酷教育 发表于:

前面的课程中,我们已经对函数有了简单的了解函数的声明、函数的的调用、函数的参数以及返回值等等本节内容主要对函数中的一些高级操作进行

前面的课程中,我们已经对函数有了简单的了解
函数的声明、函数的的调用、函数的参数以及返回值等等
 
本节内容主要对函数中的一些高级操作进行讲解,方便大家在项目操作过程中对函数的操作更加灵活一些
 
函数递归
函数变量赋值
参数中的函数
匿名函数
返回值中的函数:闭包
偏函数
装饰器
1. 函数递归
 
函数的递归,就是让在函数的内部调用函数自身的情况,这个函数就是递归函数。
递归函数其实是另外一种意义的循环
如:计算一个数字的阶乘操作,将这个功能封装成函数fact(num)
提示:阶乘算法是按照小于等于当前数字的自然数进行乘法运算
计算5的阶乘:5 X 4 X 3 X 2 X1
计算n的阶乘:n X (n - 1) X ... X 3 X 2 X 1


我们在之前说过,递归就是另外一种特殊的循环:函数级别的循环
所以递归函数也可以使用循环来进行实现
但是循环的实现思路没有递归清晰。
 
使用递归函数时一定需要注意:递归函数如果一旦执行的层数过多就会导致内存溢出程序崩溃。
 
有一种做法是将递归函数的返回值中,不要添加表达式,而是直接返回一个函数,这样的做法旨在进行尾递归优化,大家如果有兴趣的话可以上网自行查询一下;由于不同的解释器对于函数递归执行的不同的处理,所以递归的使用请慎重分析和操作。
 
2. 函数变量赋值
 
函数,是一种操作行为
函数名称,其实是这种操作行为赋值的变量
调用函数,其实是通过这个赋值的变量加上一堆圆括号来进行函数的执行

既然函数名称只是一个变量,变量中存放了这样的一个函数对象
我们就可以将函数赋值给另一个变量

3. 参数中的函数
 
函数作为一个对象,我们同样可以将函数当成一个实际参数传递给另一个函数进行处理、

4. 匿名函数


5. 返回值中的函数:闭包
 
函数作为对象,同样也可以出现在返回值中,其实就是在函数中又定义了另外的函数
在一个函数中定义并使用其他的函数,这样的方式在不同的编程语言中有不同的管理方式,在Python中,这样的方式也成为闭包。

6. 偏函数
 
常规函数操作中,我们在函数的参数中可以添加参数的默认值来简化函数的操作,偏函数也可以做到这一点,偏函数可以在一定程度上更加方便的管理我们的函数操作
偏函数通过内置模块functools的partial()函数进行定义和处理
 
如之前我们学习过的一个类型转换函数int(str),用于将一个字符串类型的数字转换成整数,同样的,可以在类型转换函数中指定将一个字符串类型的数字按照指定的进制的方式进行转换


系统内置函数可以通过上述的形式进行封装,那么我们自定义函数是否也可以封装呢


7. 装饰器函数处理
 
装饰器是在不修改函数本身的代码的情况下,对函数的功能进行扩展的一个手段






>>>更多VR/AR入门教程:VR入门