函数基础
不重要 – 函数的意义:减少重复工作
-
函数定义:函数就是实现某一特定功能的封装
-
什么时候用函数:一个功能需要反复调用时
-
函数制作时的核心思想:
- 将每个函数都应该封装成一个实现某个特定功能,完全独立的功能块
- 学习风向标,已经封装好的max,min等内部的BIF
-
函数分类:系统函数(BIF)和自定义函数
一、定义和调用函数
- 语法
def 函数名(形参列表):
函数说明文档
函数体
函数名(实参列表) - 各部分的逐一解释:
-
函数名:和变量命名要求相同
- 硬性要求:
- 字母数字下划线开头,数字不能开头
- 不能是关键字
- 美观要求:
3. 见名知意(功能)
4. 小写字母,多个用下划线隔开
- 硬性要求:
-
形参列表:
-
=号
- 功能:设置默认值
- 举例:‘def func1(num1=100,num2=100):’
- 注意:
- 形参有默认值时,可以不传实参。
- 如果同时有没有默认值和有哦认值的在形参里,把有默认值的放后面
-
:号
- 功能:说明形参数据类型
- 举例:‘def func1(num1:str,num2=[1,2,3]):’
- 注意:没有默认值时,加:数据类型;有默认值时,默认值就是该形参的数据类型
-
*号+形参
- 功能:不定长参数,用来解决输入参数个数不确定的情况
- 举例:‘def sumN(*nums):’
- 注意:
- 函数体中直接使用nums就行,不带*号
- 函数体中的nums的数据类型是元组
- 如果不定长形式参数后面还有形参,那这个形参在传参的时候必须使用关键字传参,不然不知道什么时候结束。
-
单个*号
- 功能:本身无意义,代表后面的所有参数必须使用关键字参数进行传参,也即是在实参的位置
- 举例:‘def sumN(a,*,b,c):’
-
->号
- 功能:提醒返回值类型
- 举例:‘def sumN(a,b,c) ->int:’
-
-
函数说明文档:多行注释
- 格式:
- 第一行:功能说明区
- 第二行:参数说明区(即输入格式及内容说明)
- 第三行:返回值说明区,函数最终的的产物及格式(即输出格式及内容说明)
- 格式:
-
实参列表:
- 其传参的方式分为两种:位置参数和关键字参数
- 位置参数:一一对应赋值给形参
- 关键字参数:通过等号让实参传递值给形参
- 当两者混用时,必须让关键字参数放后面。
- 和形参默认值摆放一样,即有等号就必须放后面
- 其传参的方式分为两种:位置参数和关键字参数
-
二、函数调用过程
- 重要结论:定义函数不会执行函数体,调用时才会执行
- 每次在调用函数时,它的执行过程:
- 第一步:调用,回到函数定义的位置
- 第二步:传参(实参->形参)(传参必须保证每个形参都有值)
- 第三步:执行函数体
- 第四步:确定函数返回值
- 第五步:返回,回到函数调用的位置,接着往后执行