一.函数的定义和调用
1.定义
函数:我们可以将在不同的地方要调用的相同的功能的代码进行分装,打包,定义一个函数
进行封装。
例如:
假设我们想在登录和注册时验证本人的手机号码是否正确时,我们可以将验证手机号码的过
程封装进函数里,之后进行使用。首先,我们定义一个函数,def 是关键字,number 是函数
名,括号内是参数。(变量可以自己命名)
2.调用
定义成函数之后,再调用函数来实现代码的复用,如上我们定义的函数是number(),所有
我们就在需要函数的加上number()。
print 是不能把打印的内容赋值给变量
return 返回的值是可以把值赋值给变量(函数外部是无法访问函数内部的,如果我们想要访问可以加上return 和返回值。return不仅有代出特定值的作用还有结束的作用)
二.函数的参数
Python中函数主要有这三种参数:
必备参数、默认参数 和 不定长参数
其中不定长参数有:元组和字典两种类型
字典传入是,必须是键值对的形式,且只能最后传入,定义时也只能放在最后面
-> None: 这个语法是指这个函数的返回值是什么类型,在调用help查看时可以看到,通常
在看python源码时会见到
拆包: 类似于我们之前讲的元组拆包,在传入时也可以通过解包来传入不定长参数
三.函数作用域
函数不会改变传入的不可变对象的值
函数内部定义的变量在函数外部不可以使用,是局部变量。
如果想要在函数内部改变外面不可变对象变量的值,则需要在函数内部使用 global 关键字
global 是全局变量声明,声明之后可以在全局使用,这里的全局指的是当前py文件中。如果
是嵌套的函数,则不能使用global,需要使用nonlocal 关键字
注意:函数内外名字要一致,否则就是一个新变量
函数作用域-闭包
把刚才的函数稍微改一下,改f4的返回值为函数 func5 ,调用f4之后的变量值,可以再次调
用
把内部函数(func5)和外部变量(var1)都称为闭包
作用:可以在外部修改函数内部的变量值,是函数内部与外界沟通的桥梁
比如游戏中的血量,是不能任何地方都可以随便修改的,否则随便一个外挂就无敌了
因此需要把血量保护起来,不能随便修改,要修改只能通过调用指定的函数才行,这样就在
一定程度上保护了血量
四.递归和匿名函数
递归函数:
递归函数简单来说就是函数内部调用自己,和while循环类似,也需要一个结束条件,否则超
出递归深度就会报错
匿名函数:
匿名函数就是没有函数名的函数,主要用来定义那种不是特别复杂的函数,常用用于函数的
参数中
简写: