1.函数的本质
2.函数的语法结构
3.函数的定义与调用
4.函数的分类
5.函数的返回值
6.函数的参数
函数可以看成是工具 提前定义好 之后可以反复使用
例:有函数和没有函数的区别
没有函数(没有工具):每次使用某个工具的时候都需要现场制作
有函数(有工具):提前准备好工具 用的时候直接使用即可
函数必须要先定义 之后才能使用
# 函数的定义(提前准备工具的过程) def my_func(): pass # 函数的使用(开始选择工具并使用) my_func() # 使用函数 我们更加习惯说成 调用函数 函数调用
def 函数名(参数1,参数2): '''函数注释''' 函数体代码 return 返回值
是定义函数的关键字
与变量名的命名一致 尽量做到见名知意
在定义函数的时候函数名后面必须跟括号
定义函数括号内可以写参数(个数不固定)也可以不写参数
用于接收外界传递给函数体代码内部的数据
类似于说明书 用于介绍函数的主题功能和具体用法
整个函数最核心的区域(逻辑代码)
控制函数的返回值
调用函数之后返回值如何理解
使用函数之后有没有相应的反馈
定义函数的代码必须要在调用函数的代码之前先运行即可
func() def func(): print('我是一个函数')
调用函数使用函数名加括号(可能需要添加额外的参数)
只有在调用阶段才会真正的执行函数体代码
def func(): fcvhjfjhfyku cghfuyfkuy uyfruykrf
函数名绑定的是一块内存地址 里面存放了函数体代码
要想运行改代码 就需要调用函数>>>:函数名加括号
3.5 函数名加括号执行优先级最高(定义阶段除外)
def func(): print('函数名') func
解释器提前帮你定义好的函数 用户可以直接调用 len()
内置函数可以直接调用
但是数据类型的内置方法(函数)必须使用数据2类型点的方式才可以调用
相当于是数据类型独有的一些内置方法
1. 空函数
函数体代码使用pass顶替 暂时没有任何功能
主要用于前期的项目搭建 提示主要功能
def func(): pass
2.无参函数
函数定义阶段括号内没有填写参数,无参函数直接函数名加括号即可调用
def func(): print('无参函数') func()
3.有参函数
函数定义阶段括号内填写参数,有参函数调用需要函数名加括号并且给数据值
def func(a, b): print('无参函数') func(1, 2)
返回值就是调用函数之后产生的结果 可有可无 获取函数返回值的方法是固定的
变量名 = 函数() 有则获取 没有则默认接收None
def func(): print('from func') res = func() print(res) # None
def func(): print('from func') return res = func() print(res) # None
def func(): print('from func') return 123 res = func() print(res) # 123
def func(): print('from func') name = 'zhang' return name res = func() print(res) # zhang
def func(): return 1,2,3,4 res = func() print(res) # (1, 2, 3, 4)
def func(): return [1, 2, 3, 4] res = func() print(res)
def funs(): return [1, 2, 3],{'name':'zhang'},123 res = funs() print(res) # ([1, 2, 3], {'name': 'zhang'}, 123)
def func(): print('我在上面') return 123 print('我在下面') func()q
参数有两大类
1.形式参数 :函数在定义阶段括号内填写的参数 简称为‘形参’
2.实际参数 :函数在调用阶段括号内填写的参数 简称为‘实参’
形参与实参关系
形参相当于是变量名、
实参相当于是数据值
在函数调用阶段形参临时与实参进行绑定 函数雨运行结束立刻解除
动态绑定 动态解除
1. 位置形参 :在函数定义阶段括号内从左往右依次填写的变量名称之为位置形参
2. 位置实参 :在函数调用阶段括号内从左往右依次填写的数据值称之为位置实参
实参可以是数据值也可以是绑定了数据值的变量名
给位置形参传值得时候必须个数一致 多一个不行 少一个也不行
关键字实参 :在函数调用阶段括号内以什么等于什么的形式传值称之为关键字实参
1.指名道姓的给形参传值(打破了位置的限制)
2.位置实参必须在关键字实参的前面
无论是形参还是实参 都遵循短的(简单)在前面 长的(复杂)在后面
3.同一个形参在一次调用中只能传一值
默认值形参:在函数定义阶段括号内以什么等于什么的形式填写的形象称之为默认值形参
1.在函数定义阶段就给形参绑定值 后续调用阶段就可以不传
2.调用阶段不传值就使用默认值的 传了就用传了的
还需要遵循前面总结的规律(j简单的在左边 复杂的在右边)
可变长形参:可以打破形参与实参的个数限制 随意传值
def func(*x): print(x)
在形参中的作用:接受多余的位置参数并组织成元组的形式赋值给*后面的变量名
def func(**y): print(y)
在形参中的作用:接受多余的关键字参数并组织成字典的形式赋值给**后面的变量名
也可以连用