python中函数的使用
函数:一个带有名字的代码块,用于执行某些特定的任务。例如:当某些代码需要多次被重复执行时,就可以将代码封装为一个函数。当需要使用函数中的代码时,直接调用即可。
1、函数的使用
函数的使用方法为:创建一个函数,然后调用函数即可,函数之间可以调用。注意:在python中必须先定义函数,然后才能调用函数。根据数据的需要函数的参数与返回值可有可无。当创建函数时,函数名不能相同,否则后面创建的函数会覆盖前面的函数。函数之间调用时不能相互调用,例如:a调用b然后b调用a,这会造成死循环程序停止不下来。
创建函数时根据参数与返回值的有无,创建函数的分为:没有参数与返回值、没有参数有返回值、有参数没有返回值、有参数有返回值。
1.1、没有参数与返回值的函数
没有参数与返回值的函数:不给函数传参数也不需要函数返回结果。
语法:
# 创建函数
def 函数名():
需要执行的代码1
需要执行的代码2
......
# 调用函数
函数名()
在python中的应用:
# 1.1、没有参数与返回值的函数
# 创建函数,功能:使用for循环输出0 - 9
def print_num1():
for i in range(0, 10):
print(i, end=' ')
# 调用函数
print_num1()
运行之后的结果:
0 1 2 3 4 5 6 7 8 9
1.2、没有参数有返回值的函数
没有参数有返回值的函数:不给函数传入参数,但是函数会返回一个结果。
语法:
# 创建函数
def 函数名():
需要执行的代码1
需要执行的代码2
......
return 返回值
# 函数的调用
变量名 = 函数名()
在python中的应用:
# 1.2、没有参数有返回值的函数
# 创建函数,功能:使用for循环向列表中添加0-9然后返回列表
def print_num2():
# 创建存储数据的列表
list1 = []
# 使用for循环向列表中添加数据
for i in range(0, 10):
list1.append(i) #添加数据
# 返回列表
return list1
# 调用函数
list1 = print_num2()
# 输出结果
print(f'list1 = {list1}')
运行之后的结果:
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1.3、有参数没有返回值的函数
有参数没有返回值的函数:给传入了参数,没有返回结果的函数。注意:参数可以是多个。
语法:
# 创建函数
def 函数名(参数1, 参数2, ...):
需要执行的代码1
需要执行的代码2
......
# 使用函数
函数名(参数1, 参数2, ...)
在python中的应用:
# 1.3、有参数没有返回值的函数
# 创建函数,功能:传入一个参数num,输出0-num之间的数字,每10换一次行
def print_num3(num):
for i in range(num):
if i % 10 == 0:
print()
print(i, end=' ')
# 调用函数
print_num3(20)
运行之后的结果:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
1.4、有参数有返回值的函数
有参数有返回值的函数:给传入参数,有返回结果的函数。注意:参数可以是多个。
语法:
# 创建函数
def 函数名(参数1, 参数2, ...):
需要执行的代码1
需要执行的代码2
......
return 返回值
# 调用函数
变量名 = 函数名(参数1, 参数2, ...)
在python中的应用:
# 1.4、有参数有返回值的函数
# 创建函数,功能:传入一个参数num,输出一个存储0-num之间数字的列表
def print_num4(num):
# 创建存储数字的列表
list2 = []
# 使用for循环向列表中添加数据
for i in range(num):
list2.append(i) # 添加数据
# 返回列表
return list2
# 调用函数
list2 = print_num4(10)
# 输出结果
print(f'list2 = {list2}')
运行之后的结果:
list2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1.5、函数说明文档
当我们创建一个项目时,里面会有许多的函数,有时我们想知道某个函数的功能,又不想回到创建函数的位置去查看,函数说明文档就派上用场了。
函数说明文档:函数内部的注释,用于对函数进行解释说明。注意:说明文档是使用三个双引号进行注释的,为于函数的开头位置。
语法:
# 创建函数说明文档,以有参数有返回值的函数进行举例
def 函数名(参数):
"""
函数说明文档的位置
"""
需要执行的代码
return 返回值
# 说明文档的调用
help(函数名)
在python中的应用:
# 1.5、函数说明文档的使用,以有参数有返回值的函数举例
# 创建函数,功能:传入一个参数num,输出一个存储0-num之间数字的列表
def print_num4(num):
"""
函数的说明文档的创建
功能:传入一个参数num,输出一个存储0-num之间数字的列表
:param num:用于指定循环的边界
:return:
list2:一个列表,存储0-num之间的整数
"""
# 创建存储数字的列表
list2 = []
# 使用for循环向列表中添加数据
for i in range(num):
list2.append(i) # 添加数据
# 返回列表
return list2
# 函数说明文档的调用
help(print_num4)
运行之后的结果:
Help on function print_num4 in module __main__:
print_num4(num)
函数的说明文档的创建
功能:传入一个参数num,输出一个存储0-num之间数字的列表
:param num:用于指定循环的边界
:return:
list2:一个列表,存储0-num之间的整数
2、函数中变量的使用
在python中函数能够调用的变量分为全局变量和局部变量。
全局变量:在函数外面声明,在函数内部调用的变量。在函数内使用全局变量时需要使用global关键字进行声明然后才能使用。全局变量能够被多个函数进行调用。
局部变量:在函数内部声明,在函数内部使用的变量。局部变量只能在创建局部变量的函数内部使用,不能被其他函数调用。
语法:
# 全局变量的使用
# 创建全局变量
全局变量名 = 值
def 函数名():
# 使用全局变量
golbal 全局变量名
使用全局变量的代码
# 局部变量的使用
def 函数名():
# 创建局部变量
局部变量名 = 值
# 使用局部变量
使用基本变量的代码
在python中的应用:
# 函数中变量的使用
# 全局变量的使用
# 创建全局变量
a = 10
def testA():
# 使用全局变量
global a # 声明全局变量
a = 20 # 给a赋值为20
def testB():
# 使用全局变量
global a # 声明全局变量
print(f'a = {a}') # 输出a值
# 局部变量的使用
def testC():
b = 100 # 创建局部变量
print(f'b = {b}') # 使用局部变量
# 调用函数
testA()
testB()
testC()
运行之后的结果:
a = 20
b = 100
3、函数中参数的使用
在python中传递给函数的参数分为位置参数、关键字参数、缺省参数、不定长参数。
3.1、位置参数
位置参数:调用函数时根据函数定义的参数位置来传递参数。注意:传递给函数的参数和在函数中定义的参数的顺序个数必须一致,否则会报错。
语法:
# 创建函数
def 函数名(参数1, 参数2, ...):
需要执行的代码
# 位置参数的使用
函数名(位置参数1,位置参数2, ...)
在python中的应用:
# 位置参数的使用
# 创建函数
def user_info(name, sex, age):
print(f'姓名:{name},性别:{sex},年龄:{age}')
# 调用函数
user_info('张珊', '女', 18)
user_info('张珊', 18, '女') # 显示的信息发生错位
# user_info('张珊', '女') # 报错
运行之后的结果:
姓名:张珊,性别:女,年龄:18
姓名:张珊,性别:18,年龄:女
3.2、关键字参数
关键字参数:函数调用,参数通过’键 = 值’形式加以指定,可以让函数更加清晰,容易使用,同时也清楚了顺序要求。注意:函数调用时,如果有位置参数时,位置参数必须在关键字参数之前,但关键字参数之间不存在先后顺序。
语法:
# 创建函数
def 函数名(参数1, 参数2, ...):
需要执行的代码
# 当不存在位置参数时
函数名(关键字参数1 = 值1, 关键字参数2 = 值2,....)
# 当存在位置参数时
函数名(位置参数, 关键字参数1 = 值1, ...)
在python中的应用:
# 关键字参数的使用
# 创建函数
def user_info(name, sex, age):
print(f'姓名:{name},性别:{sex},年龄:{age}')
# 不存在位置参数时
user_info(name='李四', sex='男', age=19)
user_info(name='李四', age=19, sex='男')
# 存在位置参数时
user_info('李四', sex='男', age=19)
运行之后的结果:
姓名:李四,性别:男,年龄:19
姓名:李四,性别:男,年龄:19
姓名:李四,性别:男,年龄:19
3.3、缺省参数
缺省参数:缺省参数:用于定义函数,为参数提供默认值,调用函数时可以不传该默认参数的值(注意:所有位置参数必须在默认参数之前,包括函数定义和调用)。注意:函数调用时如果缺省参数传递值时修改默认参数值,否则使用默认参数值。
语法:
# 创建函数
def 函数名(位置参数, 缺省参数1 = 值1, ...):
需要执行的代码
# 当缺省参数传入值时
函数名(位置参数值, 缺省参数 = 值, ...)
函数名(位置参数值, 缺省参数值, ...)
# 当缺省参数不传入值时
函数名(位置参数值, ...)
在python中的应用:
# 缺省参数的使用
# 创建函数
def user_info(name, sex, age=18):
print(f'姓名:{name},性别:{sex},年龄:{age}')
# 修改默认值时
user_info('王五', '男', age=20) # 使用了关键字参数
user_info('王五', '男', 20)
# 不修改默认值时
user_info('王五', '男')
运行之后的结果:
姓名:王五,性别:男,年龄:20
姓名:王五,性别:男,年龄:20
姓名:王五,性别:男,年龄:18
3.4、不定长参数
不定长参数:不定长参数又叫可变参数,用于不确定调用时会传递多少个参数(不传参数)的场景,此时可以用包裹参数,来进行传递参数。变量可以分为args和kwargs两种。当使用args时,传进的所有参数都会被args变量收集,他会根据参数位置合并为一个元组,args是元组类型,这就是包裹位置传递。当使用kwargs时,传进的所有参数都会被kwargs变量收集,他会根据参数名称与参数值合并为一个字典,kwargs是字典类型,这就是包裹位置传递。
语法:
# args的使用
# 创建函数
def 函数名(*args):
需要执行的代码
# 调用函数
函数名(参数值1,参数值2,....)
# kwargs的使用
# 创建函数
def 函数名(**kwargs):
需要执行的代码
# 函数的调用
函数名(参数1 = 值1, 参数2 = 值2, ...)
在python中的应用:
# 不定长参数的使用
# 使用args关键字
# 创建函数
def info1(*args):
print(args)
# 调用函数
info1('赵六', '男', 21)
# 使用kwargs关键字
# 创建函数
def info2(**kwargs):
print(kwargs)
# 调用函数
info2(name='赵六', sex='男', age=21)
运行之后的结果:
('赵六', '男', 21)
{'name': '赵六', 'sex': '男', 'age': 21}