Contents
3.8. 函数的返回值¶
使用return语句进行返回
3.8.1. 有返回值和无返回值函数¶
#!/usr/bin/env python
# -*- coding:utf8 -*-
def no_returm():
print("no return 函数不写return语句")
def just_return():
print("just return 函数只写return,不返回具体内容")
return
def return_val():
a = 20
b = 10
z = a+b
print("return val函数写return语句,并返回求和结果..")
return z
print("函数no retrun 调用结果:{}".format(no_returm()))
print("函数just return 调用结果:{}".format(just_return()))
print("函数return val 调用结果:{}".format(return_val()))
"""
no return 函数不写return语句
函数no retrun 调用结果:None
just return 函数只写return,不返回具体内容
函数just return 调用结果:None
return val函数写return语句,并返回求和结果..
函数return val 调用结果:30
"""
3.8.2. 函数返回值示例¶
#!/usr/bin/env python
#-*- coding:utf8 -*-
def fun_checkout(money):
'''
计算商品合计金额,并进行折扣处理
:param money: 保存商品金额的列表
:return:商品的合计金额和折扣后的金额
'''
money_old = sum(money) #计算合计金额
money_new = money_old #计算折扣后的金额
if 500 <= money_old < 1000: #享受9折优惠
money_new = '{:.2f}'.format(money_new*0.9)
elif 1000 <= money_old <= 2000: #享受8折优惠
money_new = '{:.2f}'.format(money_new*0.8)
elif 2000 <= money_old <= 3000: #享受7折优惠
money_new = '{:.2f}'.format(money_new*0.7)
elif money_old >= 3000: #享受6折优惠
money_new = '{:.2f}'.format(money_new*0.6)
return money_old, money_new
#调用函数
print('开始结算......\n')
list_money = []
while True:
In_money = float(input("请输入您购买的商品金额(输入0表示输入完毕):"))
if int(In_money) == 0:
break #退出循环
else:
list_money.append(In_money)
money = fun_checkout(list_money) #调用函数
print("合计金额:{},应付金额:{}".format(money[0], money[1]))
#!/usr/bin/env python
#-*- coding:utf8 -*-
def notrurn():
print("noreturn 函数不写return语句")
def justreturn():
print("justreturn 函数致谢return,不返回具体内容")
return
def returnval():
x=10
y=20
y+=1
z=x+y
print("returnval写了return语句,z变量并求和:",z)
return z
print("函数notrurn调用结果:",notrurn())
print("函数justreturn的调用结果:",justreturn())
print("函数returnval调用结果:",returnval())
3.8.3. 函数返回多个返回值¶
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/5/10 16:05
# filename: 多个返回值的函数.py
def sum_and_avg(list):
sum = 0
count = 0
for i in list:
if isinstance(i, int) or isinstance(i, float):
count += 1
sum += i
return sum, sum / count
mylist = [11, 22, 33, 44, 55, 66, 77]
sum_test = sum_and_avg(mylist)
sum_num, average_num = sum_and_avg(mylist)
print(sum_num)
print(average_num)
print("sum_test函数中的sum为【{}】".format(sum_test[0]))
print("sum_test函数中的avg为【{}】".format(sum_test[1]))
输出结果
308
44.0
sum_test函数中的sum为【308】
sum_test函数中的avg为【44.0】
3.8.4. 使用函数作为返回值¶
代码示例
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/12/19 22:31
# filename: 使用函数作为返回值.py
def get_math_func(type):
"""
:param type:
:return:
"""
# 计算平方局部函数
def square(n):
return n * n
# 计算立方局部函数
def cube(n):
return n * n * n
def factorial(n):
result = 1
for index in range(2, n + 1):
result *= index
return result
# 返回局部函数
if type == "square":
return square
if type == "cube":
return cube
else:
return factorial
if __name__ == '__main__':
math_func = get_math_func("square")
print(math_func(5)) # 25
math_func = get_math_func("cube")
print(math_func(5)) # 125
math_func = get_math_func("other")
print(math_func(5)) # 120