编程语言爱好者Python时空大数据呆鸟的Python数据分析

Python进阶干货,偏函数、递归函数、回调函数、返回函数大总结

2020-05-08  本文已影响0人  Java领域指导者


前言

近期我们在不断更新Python相关知识点,小伙伴们的反馈也很好,很多也领取了学习资料,真的希望能够帮到大家更好的学习。今天,我们还是照旧,给大家介绍一下Python函数的进阶——偏函数、变量的作用域、回调、返回、递归函数与闭包。小伙伴们准备好了吗?

偏函数

python中的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。将函数的某些值给固定住(也就是设置默认值),给你返回一个新的函数,调用这个新的函数会更简单,这个函数就是偏函数的功能。

语法:

变量的作用域

在python程序中,创建,改变,查找变量名的时候,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域,

简单来说,变量的作用域就是指变量可以使用的范围,

程序中变量并不是在任意的地方都能访问,访问范围取决于它在赋值的位置 定义的位置

1.局部作用域

在函数中定义的变量,每当函数被调用的时候它都会产生一个新的作用域,

这个新的作用域我们称之为局部作用域,在局部作用域中定义的变量,我们称之为局部变量

局部变量起作用的范围就是当前所在的这个函数。

2.嵌套作用域

又称函数作用域

在闭包函数外的函数中

3.全局作用域 L(local)

在模块中定义的变量,并且定义在函数体之外的变量,

他们产生的作用域叫做全局作用域,这个变量我们称之为全局变量。

全局变量作用的范围整个.py文件。

注意:在局部作用域中,不能直接更改全局变量的值,若有需要在局部作用域中更改

全局变量,则需要在更改之前对此变量进行声明,使用关键字global进行声明,

声明之后便可更改。

注意:在python中,只有模块,类以及函数【def,lambda】这些才会引入新的作用域,而其他的语句块比如:if/else,while/for,try/except这些语句块不会引入新的作用域

也就是说在这些语句中定义的变量,在外部仍然可以使用。

4.内置作用域

系统内部定义的变量产生的作用域,叫做内置作用域。

比如预定义在builtin模块内部

起作用的范围,所有的.py文件。

5.搜索变量的优先级

局部作用域>嵌套作用域>全局作用域>内置作用域,

当这几个作用域中都不存在的时候则报错。

返回函数

在python中除了可以接受函数作为参数外,还可以把函数作为结果值返回。

把函数作为返回值返回的时候,我们可以称这个函数为返回函数。

闭包

闭包:在外函数的内部定义了一个内函数,内函数使用了外函数的临时变量,外函数的返回值是内函数的引用【内函数的函数名】,这时候就构成了一个闭包

一般情况下当函数执行完毕,函数中所有的东西都会被释放掉还给内存,这时候局部变量也会消失,但是当外函数结束的时候,发现自己还有临时变量在内函数中还会使用,此时外函数会将自己的临时变量绑定内函数,自己再结束。

函数中的变量在函数被调用的时候创建,在函数执行结束的时候被销毁。

装饰器一定是闭包,但是闭包不一定是装饰器。

递归函数

递归函数:函数在内部是可以调用其他函数的,当被调用的函数是函数自己本身的时候,我们称这个函数为递归函数。(使用递归函数的时候,一定要注意栈溢出的情况,且一般情况下不建议使用递归函数。)

递归函数的优点是定义简单,逻辑清晰,理论上所有的递归函数都可以写成循环的方式,但是循环的逻辑不如递归清晰。

回调函数

将函数作为参数传递到另外一个函数中,这个被传递进去,后来又被调用的函数,我们称之为回调函数。简单来说:回调函数就是把函数当成一个参数传递到函数中。

以上就是小编帮大家整理的Python进阶函数,只是小编自己的见解,有哪里不准确的,咱们多多交流,共同进步啊~~~

另外小编帮大家整理了一些Python函数的学习资料,由浅及深都有的啊,有需要的小伙伴请关注小编,并加微信:bjmsb1来免费领取吧~~~

上一篇下一篇

猜你喜欢

热点阅读