函数
函数作用
- 在实现某个功能对应的代码的时候,如果将实现功能对应的函数放到函数中,那么下一次再需要这个功能的时候, 就可以不用再写这个功能对应的代码了,而是直接调用这个功能对应的函数
认识函数
- 函数就是实现某一特定功能的代码的封装 - 函数就把实现某个功能的代码打成一个包,
以后再需要这个功能的时候,直接使用函数就可以了。 - 函数分类:
- 系统函数(已经造好的机器):由系统创建好函数,只需要在需要它们提供功能的时候去调用它,例如:print,input,max,type等
- 自定义函数:有程序员自己创建的函数
- 定义函数(创建函数)
-
语法:
def 函数名(形参列表):
函数说明文档
函数体 -
说明:
a.def - 关键字;固定写法
**b.**函数名 - 程序员自己;
两个要求:是标识符, 不是关键字
三个规范:见名知义(看到函数名就大概知道这个函数的功能)、不使用系统函数名类名或者模块名、
所有字母都小写,多个单词用下划线隔开
c.() - 固定写法
**d.**形参列表 - 以’变量名1,变量名2,变量名3,… '的形式存在,这儿的每一个变量就是一个形参;
形参的个数可以是任意多个:0个、1个、2个**e.**函数说明文档 - 本质就是一个多行注释
**f.**函数体1 - 函数体就是和def保持一个缩进的一条或者多条语句(至少一条)
逻辑上,函数体就是实现函数功能的代码 -
初学者定义函数的步骤:
第1步: 确定函数功能
第2步: 确定函数名
第3步: 确定形参(看实现函数的功能需不需要额外的数据,需要几个)
第4步: 通过函数体实现函数功能
第5步: 确定函数返回值
第6步: 写函数说明文档
-
- 调用函数(使用函数)
- 语法:
函数名(实参列表) - 说明:
函数名 - 必须是已经定义好的函数的函数名
(需要哪个函数的功能就调用哪个函数,就写哪个函数的函数名)
() - 固定写法
实参列表 - 实参就是通过形参从函数外部传递到函数内部的数据
以’数据1,数据2,数据3, .'的形式存在,这儿的每个数据就一个实参, 实参的个数由形参的个数决定 - 重要结论: 定义函数的时候不执行函数体,调用函数的时候才会执行。调用多少次,函数体就会执行多少次。
- 调用过程: 每次调用函数的时候:
- 回到函数定义的位置
- 传参 (用实参给形参赋值)
- 执行函数体
- 确定返回值
- 回到函数调用的位置接着往后执行
- 语法:
函数的参数
- 根据调用函数的时候实参提供方式的不同,可以将实参分为位置参数和关键字参数
- 位置参数 - 直接将多个数据用逗号隔开,让实参和形参从位置上一一对应
- 关键字参数 - 调用函数的时候,以’形参名1=实参1,形参名2=实参2,… '形式存在的参数
- **注意:**a.如果位置参数和关键字参数-起使用,那么位置参数必须在关键字参数的前面
b.不管以什么样的方式传参,必须保证每个参数都有值,并且每个参数只有一个值
- 参数默认值:
- 定义函数的时候可以以’形参名=值’的方式给形参赋默认值,有默认值的参数在调用函数的时候可以不用传参。
- 定义函数的时候可以有的参数有默认值,有的参数没有默认值,但是没有默认值的参数必须在有默认值参数的前面。
- 如果要跳过前面有默认值的参数,直接给后面的参数传参,必须使用关键字参数
- 参数类型说明:
- 没有默认值的参数:形参名:类型名
- 有默认值的参数,默认值的数据类型就是参数类型
参数返回值
- 什么是返回值:
- 返回值就是从函数内部传递到函数外部的数据
- 定义函数的时候,需不需要添加返回值的建议:看实现函数的功能有没有产生新的数据,如果有新的数据,就将新的数据作为返回值返回。
- 怎么确定函数返回值 :
- 返回值就是return关键字后面的表达式的值(函数内部产生的数据,如果不用返回值返回是无法在函数外部使用)
- 怎么使用函数返回值
- 函数调用表达式的值就是函数的返回值(python中每个函数调用表达式都是有结果,这个结果就是这个函数在调用的时候得到的返回值)
- 注意:每次调用函数的时候会执行函数体,并且获取函数返回值