函数
函数
-
函数本质上是一个可以反复使用的工具,只要定义好函数体代码,就可以反复使用,能让我们只需编写一次重复使用的代码
-
语法结构
def 函数名(参数):
'''函数注释'''
函数体代码
return 返回值
1.def
用于定义函数的关键字
2.函数名
与变量名的作用类似,写函数名时尽量一看就知道意思
3.参数
函数名后面必须跟着括号,括号内部的就是参数,,参数是用于接收传给体代码的数据,参数也不是一定需要的,可以不存在
4.函数注释
就是注释,用来说明函数的功能
5.函数体代码
函数调用时执行的的代码
6.return
函数的返回值
函数的定义与调用
- 定义
1.定义函数的代码必须在调用函数的代码运行之前运行
2.函数在定义时只检查替代码的语法是否正确,而不会执行
- 调用
1.调用函数时使用函数名加括号,如果有参数还要在括号里添加参数
2.在调用函数时,才会执行函数的体代码
- 函数名
函数名本质上绑定的是内存地址,在内存地址里面存放了函数代码,调用函数时就通过函数名绑定的内存地址,运行其中的代码
函数的分类
- 内置函数
内置函数就是解释器已经定义好的函数,可以直接调用,也就是数据类型的内置方法,但数据类型的内置方法需要使用数据类型才能调用
len()
- 自定义函数
1.空函数
函数体代码使用pass顶替,没有任何功能,主要可以用于前期的项目搭建
def run():
pass
2.无参函数
无参函数就是括号内部没有参数的函数,调用时使用函数名加括号即可
def run():
print('run Barry')
run() # run:run Barry
3.有参函数
有参函数就是括号内部有参数的函数,调用时需使用函数名加括号并在括号内部给出数据值
def run(a):
print(a, 'run Barry')
run(18) # run:18 run Barry
函数的返回值
- 返回值就是调用函数后产生的结果,获取返回值的方法:变量名 = 函数()
- 函数体代码没有return关键字时,返回值为None
def run():
print('run Barry')
res = run()
print(res) # run:None
- 函数体代码return关键字后面什么都没有时,返回值为None
def run():
print('run Barry')
return
res = run()
print(res) # run:None
- return后面如果是数据值就返回数据值,如果是变量名就返回变量名绑定的数据值
def run():
print('run Barry')
return 233
res = run()
print(res) # run:233
def run():
print('run Barry')
return name
name = 'barry'
res = run()
print(res) # run:Barry
- 如果return后面有多个数据值或名字用逗号隔开,返回值会自动组成元组
def run():
print('run Barry')
return 1, 2, 3, 4, 5
res = run()
print(res) # run:(1, 2, 3, 4, 5)
- 如果想组成其他类型,如列表,字典需在return后面加入即可
def run():
print('run Barry')
return [1, 2, 3, 4, 5]
res = run()
print(res) # run:[1, 2, 3, 4, 5]
- 程序运行到return后会结束体代码的运行
def run():
print('上面')
return 233
print('下面')
res = run()
print(res) # run:上面
# 233
函数的参数
- 形式参数
定义函数的括号内填写的参数就是形式参数,简称'形参'
- 实际参数
调用函数的括号内填写的参数就是实际参数,简称'实参'
- 形参与实参
形参相当于变量名,实参相当于数据值
在调用函数时形参会与实参绑定,函数运行结束后解除
参数
- 位置参数
形参从左往右依次填写的参数叫位置形参
实参从左往右依次填写的参数叫位置实参
def run(a, b):
print(a, b) # run:2 3
return
run(2,3)
实参给形参传值时,按位置从左往右的方向顺序配对,配对的数必须是一致的,不能或多或少
- 关键字参数
无需按位置传值,直接将值传给指定的形参
在一次调用中同一个形参只能传一次值
def run(a, b):
print(a, b) # run:3 2
return
run(b=2,a=3)
默认值参数
- 在函数定义时形参就绑定值,叫默认形参,调用时可以不传值,直接使用形参绑定的值
- 默认形参在调用时,没有传值就使用默认绑定的值
def run(a, b, c='barry'):
print(a, b, c) # run:3 2 barry
return
run(b=2,a=3)
def run(a, b, c='barry'):
print(a, b, c) # run:3 2 4
return
run(b=2,a=3,c=4)
可变长参数
- 可以不遵守形参实参配对数一致的限制,将多余的值组成元组传给*后面的变量名
def run(*x):
print(x) # run:(1, 2, 3, 4, 5, 6, 7)
return
run(1, 2, 3, 4, 5, 6, 7)
- 将多余的值组成字典传给**后面的形参
def run(**x):
print(x) # run:{'name': 'barry', 'age': '22'}
return
run(name = 'barry', age = '22')