函数,把具有独立功能的代码块封装为一个小模块,在需要的时候可直接调用,不用反复重复输入,简化工作量,更方便代码阅读。
python函数
一、函数的参数,具有通用性,如果数据采用相同的处理逻辑,使用函数能够适应更多的数据
形参:定义函数时,小括号中的参数,是用来接收参数使用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部使用的。
二、 函数的return返回值
1)在程序开发中,会希望一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理
2)返回值是函数完成工作后,最后给调用者的一个结果
3)在函数中使用 return 关键字可以返回结果
4)调用函数一方,可以使用变量来接收函数的返回结果
5)return 返回结果后,后续的代码都不会被执行
三、函数案例演示
1)手工指定随机数的范围和个数,生成20个10-50之间的随机数
2)通过手工指定参数名称,生成10个10-99之间的随机数
3)按照形参默认值,生成随机数
importrandom
defbuild_array(start_number:int = 100, end_number:int = 200, number=10):
# 功能描述:生成若干个固定范围的整数集合
# :param start_number: 指定整数范围的起始值
# :param end_number: 指定整数范围的结束值
# :param number: 生成的数量
# :return: 整数的集合
number_list = []
foriinrange(number):
number_list.append(random.randint(start_number,end_number))
# 返回
returnnumber_list
if__name__=="__main__":
# 调用的方法01:调用的标准做法——实参和形参必须要一一对应
print(build_array(10,50,20))
# 调用的方法02:调用的时候指明参数的名称方式,这种情况下,调用的顺序可以和函数的顺序不一致!
print(build_array(number=10,end_number=99,start_number=10))
# 调用的方法03:按照形参默认值
print(build_array())
执行结果:
函数案例
四、函数的不定长参数
在一个函数中,如果参数数量不确定的情况下,可以使用不定长参数:
defsum_of_number(*args):
# args:为不定长参数
示例01:
defsum_of_number(*args):
"""
功能介绍:求一组数字之和
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:paramargs: 提供的数字元组
:return: 所有的数之和
"""
sum = 0
foriinargs:
sum += i
# 返回
returnsum
if__name__=="__main__":
# 调用:提供了一个参数
print(sum_of_number(11))
# 调用:提供了三个参数
print(sum_of_number(11, 22, 33))
# 调用:提供了九个参数
print(sum_of_number(11, 22, 33, 44, 55, 66, 77, 88, 99))
# 调用:提供了一个元组
tuple01 = (11, 22, 33, 44, 55, 66)
print(sum_of_number(*tuple01))
# 调用:提供了一个list
list01 = (11, 22, 33, 44, 55, 66)
print(sum_of_number(*list01))
特别注意:当前带有不定参数的函数传递列表或者字典时,切记,一定要解包否则报错
不定长参数
示例02:
defsum_of_number(*args):
"""
功能介绍:求一组数字之和
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:paramargs: 提供的数字元组
:return: 所有的数之和
"""
sum = 0
foriinargs:
sum += i
# 返回
returnsum
defsum_number(num01 = 100, num02 = 200, *args):
print("num01:", num01)
print("num02:", num02)
print("不定长参数:", args)
if__name__=="__main__":
# 调用:提供了一个参数
# 多参数
sum_number()
sum_number(11)
sum_number(11, 22)
sum_number(11, 22, 33)
总结:如果函数的方法中有普通参数和不定长参数的时候,不定长参数一定要放在最后
在调用的时候先把实参匹配普通参数,普通参数全部匹配后,在匹配不定长参数!
函数参数
示例03:不定长的字典类型使用**kwargs
defsum_of_result(**kwargs):
sum = 0
forkeyinkwargs:
sum += kwargs[key]
returnsum
if__name__=="__main__":
print(sum_of_result(语文=82, 数学=90, 英语=67))
print(sum_of_result(语文=56, 数学=67))
print(sum_of_result(语文=56, 数学=67, 外语=79, 物理=87, 化学=98))
dict01 = {"语文":56,"数学":67,"外语":79,"物理":87,"化学":98}
print(sum_of_result(**dict01))
函数参数
示例04:
defsum_of_result(num01, *args, **kwargs):
print(num01)
print(args)
print(kwargs)
# 如果有普通参数,不定长的元组,不定长的字典,顺序:先普通参数->不定长元组->不定长字典
sum_of_result(100, 200, 300, 400, 500, 语文=82, 数学=90, 外语=67)
# 匹配:num01->100 args->200,300,400,500, kwargs->语文=82, 数学=90, 外语=67
函数参数
五、函数的返回值
Return 用来返回函数的直接结果,用来返回一个值,返回多个值如何处理呢?
示例:生成若干个整数的集合,求最大数、最小数、元素之和、元素的平均数
importrandom
defbuild_array(start_number,end_number,number):
# 功能描述:生成若干个固定范围的整数集合
# :param start_number: 指定整数范围的起始值
# :param end_number: 指定整数范围的结束值
# :param number: 生成的数量
# :return: 整数的集合
number_list = []
foriinrange(number):
number_list.append(random.randint(start_number,end_number))
# 返回
returnnumber_list
defsum_of_list(list01:list):
"""
功能描述:求所有的list元素之和
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:paramlist01: 要求的list名称
:return: 返回所有元素之和
"""
sum = 0
foriinlist01:
sum += i
# 返回sum
returnsum
defmax_of_list(list01:list):
max_number = list01[0]
foriinlist01:
ifi > max_number:
max_number = i
returnmax_number
defmin_of_list(list01:list):
min_number = list01[0]
foriinlist01:
ifi
min_number = i
returnmin_number
defget_result_01(list01:list):
result_list = [] # 第一个元素就是最大值,第二个就是最小值,第三个元素就是和
max_result = list01[0]
min_result = list01[0]
sum_result = 0
# 求最大值,最小值,求和
foriinlist01:
ifi > max_result:max_result = i
ifi
sum_result += i
result_list.append(max_result)
result_list.append(min_result)
result_list.append(sum_result)
# 返回一个集合
returnresult_list
defget_result_02(list01:list):
result_list = [] # 第一个元素就是最大值,第二个就是最小值,第三个元素就是和
max_result = list01[0]
min_result = list01[0]
sum_result = 0
# 求最大值,最小值,求和
foriinlist01:
ifi > max_result:max_result = i
ifi
sum_result += i
return(max_result,min_result,sum_result)
if__name__=="__main__":
# 生成集合
list_number = build_array(number=10, end_number=200, start_number=100)
# 生成的集合
print("生成的集合为:", list_number)
#方法01: 最大值,最小值,求和
result_list = get_result_01(list_number)
print("最大值:", result_list[0])
print("最小值:", result_list[1])
print("所有元素之和:", result_list[2])
# 方法02: 最大值,最小值,求和
max_result, min_result, sum_result = get_result_02(list_number)
print("最大值:", max_result)
print("最小值:", min_result)
print("所有元素之和:", sum_result)
执行结果:
函数案例
每天进步一点点,跟着教头学Python,让代码跑起来吧!
领取专属 10元无门槛券
私享最新 技术干货