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