今日内容回顾7.1
函数的介绍
函数的本质
函数的本质就是一种工具
提前定义好可以反复使用
函数的语法结构
关键字def 函数名my_len 括号() 冒号:
"""函数注释 对这个函数功能的解释"""
函数体代码
关键字return
def my_len():
pass
return
# pass 表示补全语法结构不做任何操作!!
- 关键字def>>>: 定义函数必须要有它。
- 函数名my_len >>>:相当于变量名 而且在命名的时候尽量做到见名知意
- 括号()>>>:这个括号必须要有。它里面可以写入参数(个数不限)参数也可以不写
- 冒号:>>>: 这个必须要写。同时带有冒号的代码也表示这段代码是可以拥有子代码的。
- 注释>>>: 写上对这个函数的功能及用法可以写简单一点也可以写详细一点
- 函数体代码:你的函数能不能运行或者功能强不强大都取决于它
- 返回值return>>>:控制函数的返回值它可以写也可以不写return后面加上什么就返回什么多个数据是以元组的方式返回
函数的定义与调用
-
函数必须先定义后调用
定义函数的代码必须要在调用函数的代码之前先运行。
相当于你的工具必须要先造出来才能使用。
-
定义函数需使用关键字def,调用函数使用函数名加括号,
括号内的参数根据定义函数的情况来考虑添加或不添加。
-
函数在定义的时候只检测函数体代码语法不会执行函数体代码
只有在调用阶段使用函数名调用才会执行函数体代码。
-
函数名是什么?
函数名相当于变量名与变量名不同的是
它绑定的是一块内存地址里面存放的是函数体代码,要想运行就需要调用函数名加括号。
-
定义阶段除外函数名加括号执行优先级最高。
函数的分类
- 内置函数
python中已经设定封装好的函数,可以根据关键名直接调用
内置函数可以调用数据类型的内置函数需要根据数据类型点的方式才可以调用
相当于数据类型独有的一些内置方法
-
自定义函数
-
空函数
函数体代码使用pass顶替暂时没有功能
主要用于前期的项目搭建构造功能
def my_def(): pass
-
无参函数
函数定义阶段括号内没有填写参数
无参函数直接函数名加括号即可直接调用
def my_def(): print('hello word')
-
有参函数
函数定义阶段括好内填写参数
有参函数调用时需要函数名加括号并给数据值
def my_def(a,b): print('hello word')
-
函数的返回值
使用关键字return
返回值就是调用函数之后产生的结果可有可无
获取函数返回值的方式的固定的变量名 = 函数()
有则获取返回值 没有默认返回None
-
函数体代码没有return关键字
示例:
def func(): print("12312") res = func() # 12331 res用于接收返回值 print(res) # None # 默认返回None
-
函数体代码有return关键字
return 后面不写 是返回None
示例:
def func(): print('1234') return res = func() # 1234 print(res) # None
-
函数体代码有return关键字后面加数据值
return后面写什么返回的就是什么
如果是数据值就返回数据值如果是变量则返回变量所对应的数据值
示例:
def func(): print('123') return 666 res = func() # 123 print(res) # 666
-
函数体代码有return关键字并且后面跟了很多数据值逗号隔开
默认情况下自动组成元组返回
示例:
def func(): print('123') return 1,2,3,4 res = func() # 123 print(res) # (1, 2, 3, 4)
-
函数体代码遇到return关键字会立刻结束函数体代码的运行.
示例:
def func(): print('123') return 1,2,3,4 print('456') # 这个步骤不会被执行到 func() # 123 # 相当于for循环中的break结束。
函数的参数
函数的参数分为俩大类
-
形式参数
函数下定义阶段括号内可填入的参数简称为“形参”
-
实际参数1
函数在调用阶段括号内可填入的参数简称为”实参“
-
形参与实参的关系
形参相当于变量名,实参相当于数据值。
在函数调用阶段形参会临时与实参进行绑定函数运行结束后立即解除绑定。
位置参数
-
位置形参
在函数定义阶段括号内从左往右依次填写的变量名称之为位置形参
-
位置实参
在函数调用阶段函数名括号内从左往右的依次填写的数据值称之为位置实参
实参可以时数据值也可以时绑定了数据值的变量名
给位置形参传值时个数必须一致,过多过少都不行。
关键字参数
在函数调用阶段括号内什么等于什么的形式传值称关键字传值。
-
等于指定给形参传值,这样打破了位置传值的限制
-
位置实参必须在关键字实参的前面
-
同以形参在一次调用中只能传一次
无论是形参还是实参,都遵循简单的在前复杂的在后面的规律。
示例:
def func(a,b): print(a,b) func(1,2) # 1,2 func(b=1,a=2) # 2 1 func(b=1,2) # 报错!!! func(2,b=1) # 2 1 func(666,a=1) # 报错!!!
默认值形参
在函数定义的阶段括号内以什么等于什么的形式填写的形参称之为默认形参
示例:
def register(name, age, gender='male'):
print(f"""
-------------info-----------
name:{name}
age:{age}
gender:{gender}
----------------------------
""")
register('jason',18) # 不填写则默认使用形参的值
register('oscar',28) # 不填写则默认使用形参的值
register('lili',18,'female') # 填写则根据实参中的数据
在函数定义阶段就给形参绑定值后续调用阶段如果不写可以不传
自动默认使用定义之前绑定的值.调用阶段不传值就是使用默认的
如果有传值则使用传入的值还需要遵循前面结的规律(简单填在左边,复杂填在右边)
可变长参数
可以打破形参与实参的限制任意传值。
示例1:
*号在形参中的作用
接收多余的位置参数并组织成元组的形式赋值给*后面的变量名
def func(*x): # 阔号内输入星号后面跟上变量名
print(x)
func(1,2,3,4)
示例2:
**在形参的作用
接收多余的关键字参数并组成字典的形式赋值给**后面的变量名
def func(**y):
print(y)
func() # {} 返回空字典
func(name='jason') # {'name': 'jason'}
func(name='jason',age=18) # {'name': 'jason', 'age': 18}
func(name='jason',age=18,hobby='read') # {'name': 'jason', 'age': 18, 'hobby': 'read'}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧