1.函数
1)函数就是实现某一个功能的代码打成一个包,以后再需要这段代码对应的功能的时候不需要再写这段代码
2)函数分类
1系统函数(别人造好的机器) - python自带的函数
2自定义函数(自己造的机器) - 由程序员自己创建的函数
语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
def - 关键字,固定写法
函数名 - 由程序员自己命名,但是必须符号名要求和规范
要求:是标识符,不能是关键字
规范:见名知义
字母都是小写多个单词用下划线隔开;
不使用系统的函数名,类名,模块名
( ): - 固定写法,里面是形参列表
形参列表 - 以’变量名1,变量名2,变量名3`````'的形式存在,这里的变量名可以有也可以没有.
形参的作用:将函数外面的数据传递到函数里面
怎么确定形参列表:看实现函数的功能需不需要额外的数据,需要多少额外的数据
函数说明文档 - 本质就是一个多行注释,用来描述函数的功能和使用方法
函数体 - 结构上和def保持一个缩进的一条或者多条语句(至少一条)
逻辑上:函数体就是实现函数功能的代码
函数说明格式:
:param num1:第一个参数的说明
:param num2:第二个参数的说明
:return: None(返回值的说明)
4.函数的调用 - 使用机器
1)定义函数不会执行函数体
def func1( ):
print(‘hello world’)
print(‘abc’[10])
2)怎么调用函数
语法:函数名(实参列表)
说明:
函数名 - 需要哪个函数的功能就调用哪个函数,就写哪个函数的函数名
() - 固定写法
实参列表 - 以’数据1,数据2,数据3`````'的形式存在
实参就是通过形参从函数外部传递到函数内部具体的数据
3)函数调用的过程
第一步:先回到函数定义的位置
第二步:传参
第三步:执行函数体
第四步:确定返回值
第五步:返回函数调用的位置继续执行
2.函数的返回值
返回值就是从函数内部传递到函数外部的数据
1)怎么确定函数返回值?(怎么将指定的数据作为返回值返回)
看执行函数体的时候有没有遇到return,如果遇到return,return后面的值就是函数的返回值,如果没有遇到return,返回值是空值
2)怎么获取函数返回值
获取函数调用表达式的值就是获取函数的返回值.
函数调用表达式:调用函数的语句.
函数返回值可以做的事情,函数都可以做.
3)什么时候需要返回值
看实现函数的功能产生了新的数据,就应该将新的数据返回
原因:每次调用函数的时候,系统会自动为这个函数创建一个临时的栈区间,用来保存在函数中产生的数据,只有返回值不会被直接删除.
return
1)返回返回值
2)提前结束函数 - 执行函数体的时候如果return,函数直接结束
函数的参数
1.位置参数和关键字参数 - 根据实参传递方式分类
1)位置参数: 以’实参1,实参2,实参3,`````'的形式存在,通过位置一一对应的方式来给形参赋值.
2)关键字参数:以’形参1 = 实参1,形参2 = 实参2,`````'的形式存在,直接用 = 来确定实参和形参的对应关系.
注意:位置参数和关键字参数可以混用,但位置参数必须在关键字参数之前
2.参数的默认值
def func(x = 10 ,y = 20,z = 30):
当给函数默认值以后,使用时如果不给形参值,就使用默认参数
注意:定义函数的时候,如果参数有默认值也有没默认值的,没有默认值的必须在有默认值的前面
def func(x= 10, y=20 ,z) #错误,没有默认值的z必须放前面
3.参数类型的说明 - 定义函数的时候指定参数类型
参数类型说明既可以提示使用者在调用函数的时候该传什么类型的数据;又可以让参数在函数体中使用的时候又代码提示注意:对类型进行说明,只是说明,并不是强制
语法2,针对没有默认值的参数 - 形参名:类型名
def func(x:类型)
语法2,针对有默认值的参数 - 直接给参数默认值,默认值的类型就是参数的类型
补充:变量类型说明
强制变量的类型说明 # type :类型
4.不定长参数
例如:定义一个函数,求多个数的和
这个函数会遇到一个问题,形参的数个不确定.
解决办法
1.带一个*的不定长参数
def func5(*num)
定义函数的时候,如果在形参前面加*,那么这个参数就编程了一个不定长参数,调用的时候这个形参可以接收若干个实参
本质是将不定长形参变成一个元组,将接受到的所有的实参变成这个元组中的元素
注意:
a.带*的不定长参数在传参的时候只能使用位置参数
b.定长参数和带*的不定长参数混用的时候, *前的定长参数必须用位置参数传参,*后面的定长参数必须用关键字参数传参.
2带两个的不定长参数**
带两个**的不定长参数,这个字典就会变成一个字典,他接收的所有实参会作为这个字典的键值对,在传参的时候,必须是用带关键字的参数
本质是以字典的形式形成一个容器