函数的学习
内容概要
- 函数的定义与调用
- 函数的分类
- 函数的返回值
- 函数的参数
内容详情
函数的定义与调用
1.函数一定要遵循先定义后调用的原则
2.函数在定义阶段只检测语法不执行代码
func() # 报错 name 'func' is not defined
# 定义函数
def func():
函数体代码
3.函数体代码只有在调用函数时才会执行
4.函数名其实相当于是变量名指向的是内存空间函数体代码所在的位置
# 调用函数
'''函数的调用方式:函数名+() 如有参数则传递参数'''
func() 就是去内存中找到函数体代码并执行
函数的分类
1.内置函数
python解释器提前定义好的可以直接调用的函数
eg:len、open...
2.自定义函数
程序员自己编写的函数
无参函数
在函数定义阶段括号内没用参数
调用无参函数 括号内也不需要写参数
有参函数
在函数定义阶段括号内有参数>>>:类似于变量名
调用有参函数 在函数调用阶段括号内也必须传递参数>>>:类似于变量值
空函数
在定义阶段函数体代码是用pass或者...占位
调用空函数 前期能够通过空函数快速的罗列出程序中的大致功能
空函数大量的使用在项目中前期的功能框架搭建让程序整体框架清晰
'''功能也可以看成是函数 函数也可以看成是功能'''
函数的返回值
# 函数的返回值就是调用函数之后返回的结果
# 如何获取函数的返回值
变量名 = 函数调用
# 如何操作返回值
1.当函数体代码没有关键词return 返回值是None
2.当函数体代码有return关键字但后面没有跟任何值 返回值也是None
3.当函数体代码有return关键字并跟了数据 那么写了什么返回什么
如果写的是值那么直接返回值(任意数据类型)
如果写的是变量名那么返回变量名指向的值
4.return后面还可以跟多个值 用逗号隔开 会自动组织成元组返回出去
5.函数体代码遇到return会立刻结束函数运行
函数的参数
# 函数的参数可以分为两大类
1.函数在定义阶段括号内写的参数
形式参数>>>:形参
2.函数在调用阶段括号内写的参数
实际参数>>>:实参
# 形参与实参的关系
形参类似于变量名 实参类似于变量值
在调用函数的时候传入实参 会与形参临时绑定
函数运行结束之后自动解除绑定
位置参数
位置形参
在函数定义阶段括号内从左向右依次填写的变量名
位置实参
在函数调用阶段括号内从左向右依次传入的真实数据
位置参数的特征
1.位置参数与位置实参在绑定关系的时候就是按照从左到右的顺序依次绑定
2.位置形参与位置实参的个数要一致 不传、多一个、少一个都不行
关键字参数
主要在实参中出现
指名道姓的给形参传值 不需要遵循位置
关键字参数必须放在位置参数的后面
形参只能指向一个参数
默认参数
出现在形参中
在函数定义阶段就已经给一些形参赋值了
后续如果不传值则使用默认的
后续如果传值则使用传入的
默认参数的出现打破了形参与实参之间个数一致的情况
默认参数必须定义在位置参数的后面
可变长参数
*号在形参中可以接收多余的位置参数 并组织成元组的形式赋值给*号后面的变量名
**在形参中用于接收多余的关键字参数 并且组织成字典的形式赋值给**后面的变量名
# 可变长形参
以后在定义函数的时候 如果不确定这个函数将来需要多少个实参
则 def index(*args, **kwargs):
pass
func() # () {}
# 补充说明
*和**不单单可以在形参中使用 还可以在实参中使用
*号在实参中可以将列表或者元祖打散成位置参数一一传入
**号可以将字典打散成关键字参数一一传入
![]()