今日学习内容:
一:函数的使用原则:函数的使用应该分为两个明确的阶段
1:定义阶段:只检测语法,不执行函数体代码
2:调用阶段:会触发函数体代码的执行
函数的使用时要先定义在调用
二:函数的定义与调用形式
函数定义的三种形式:
有参函数:
def func(x):
pass
func(1)
无参函数
def bar():
pass
bar()
空函数
def func():
pass
三:函数的返回值:
注意:
1:函数的返回值没有类型限制
2:函数的返回值没有个数限制
2.1:返回多个值:多个返回值用逗号隔开,返回的是元组形式
2.1:返回一个值:返回的就是指本身
2.3:返回0个值或者干脆没有return:返回none
return除了有返回值的功能,还有结束函数执行的功能
函数内可以有多个return,但只要执行一次,整个函数就立即结束,并且讲return后的值返
四:函数参数的使用:
函数的参数分为两大类:
形式参数(形参):在定义函数阶段,括号内定义的参数/变量名称为形参
实际参数(实参):在调用阶段。括号内传入的值/变量值称为实参
在调用函数阶段会将实参(值)的值绑定给形参(变量名),
这种绑定关系只在调用函数时生效,在函数执行完毕后就会解除绑定
细分:
位置参数:
位置形参: 在定义阶段,按照从左到右的顺序依次定义的形参称之为位置形参特点: 但凡时按照位置定义的形参,必须被传值,多一个不行少一个也不行
位置实参: 在调用阶段,按照从左到右的顺序依次传入的值称之为位置实参
特点:与形参一一对应
关键字实参: 在调用阶段,按照key=value的形式定义的实参称之为关键字实参
特点: 可以完全打乱顺序,但仍然能为指定的形参传值(总结:指名道姓地为指定的形参传值)
实参的形式可以是位置实参与关键字实参混合使用,但是必须遵循原则
1.位置实参必须放在关键字实参的前面
2.不能对同一个形参重复传值
默认形参:在定义阶段,就已经为形参赋值,该形参称之为默认参数
特点
1. 定义阶段就已经有值意味着调用阶段可以不用传值
2. 位置形参必须放到默认形参的前面
3. 默认形参的值在函数定义阶段就已经固定死了,定义阶段之后的改动不会影响该值
4. 默认形参的值通常应该是不可变类型
可变长参数:
可变长实参:指的是在调用阶段,实参值个数是不固定的,
实参无非两种形式(位置,关键字实参),对应着形参也必须有两种解决方案来分别接收溢出位置实参或者关键字实参
*--->溢出的位置实参
**--->溢出的关键字实参
*的用法
在形参前加*:*会将溢出的位置实参存成元组的形式,然后赋值给*后的形参名
在实参前加*:但凡碰到实参中带*的,先将实参打散成位置实参再与形参做对应
**的用法
在形参前加**:**会将溢出的关键字实参存成字典的形式,然后赋值给**后的形参名
在实参前加**:但凡碰到实参中带**的,先将实参打散成关键字实参再与形参做对应