一、函数的返回值
-
返回值就是函数执行以后的返回的结果!可以通过return用来结束函数(循环也会结束),不管后面还有什么需要执行;而braek立即退出当前的循环(循环不再执行),但是后面的与循环有关的函数并不会退出;continiue则是跳过当前的循环,但是后面的循环要接着运行,当然后面的函数程序也要执行!
eg.
-
return后面跟什么值,函数就会返回什么值;后面可以跟任意的对象,也可以是函数。
return后面什么都不跟,就返回“NONE”
eg.
在函数中return后的代码都不会执行,return一旦执行函数自动结束!
PS:
fn是函数对象,打印fn就是在打印函数对象
fn()是函数对象,打印fn()实际上就是在打印fn()的返回值,有就返回返回值,没有就返回None
eg.
二、⽂档字符串
- help()函数是Python中内置函数,通过help()函数可以查询Python中函数的⽤法
- 在定义函数时,可以在函数内部编写⽂档字符串,⽂档字符串就是对函数的
说明
三、函数的作用域
- 作⽤域(scope),作⽤域指的是变量⽣效的区域。
- 在Python中⼀共有两种作⽤域:
1、全局作⽤域
①全局作⽤域在程序执⾏时创建,在程序执⾏结束时销毁。所有函数以外的区域都是全局作⽤域!
②在全局作⽤域中定义的变量,都是全局变量,全局变量可以在程序的任意位置进⾏访问!
2、函数作用域
①函数作⽤域在函数调⽤时创建,在调⽤结束时销毁。
②在函数作⽤域中定义的变量,都是局部变量,它只能在函数内部被访问。因此不管全局还是函数作用域,从内部是可以看到外部变量的,反之不行!而且函数只会先执行其内部的局部变量。(若全局变量和内部变量相同,则函数只会执行其局部变量)
③函数每调⽤⼀次就会产⽣⼀个新的函数作⽤域。
eg.
上述案例中,α是fn3的全局变量(全局作⽤域),β是fn3的内部变量(函数作用域)
- 如果希望在函数内部修改全局变量,则需要使用一个global关键字,来声明变量!
EG.
四、命名空间
- 命名空间实际上就是⼀个字典,是⼀个专⻔⽤来存储变量的字典。
- locals()函数⽤来获取当前作⽤域的命名空间。
如果在全局作⽤域中调⽤locals()则获取全局命名空间,如果在函数作⽤域中调⽤locals()则获取函数命名空间。返回值是⼀个字典!
eg.
五、递归函数
- 递归是解决问题的⼀种⽅式,它的整体思想,是将⼀个⼤问题分解为⼀个个的⼩问题,直到问题⽆法分解时,在去解决问题。
-
递归式函数的2个条件:
1、基线条件
问题可以被分解为最⼩问题,当满⾜基线条件时,递归就不执⾏了。
2、递归条件
可以将问题继续分解的条件。
eg.
无穷递归(慎敲!!!)
def fn():
fn
fn()
简单理解就是自己去引用自己,递归函数就是函数在自己调用自己!!!
eg.