• 大爽Python入门教程 42 函数返回值 return


    大爽Python入门公开课教案 点击查看教程总目录

    1 情景思考

    上面的函数calculate_sum是把计算的结果,
    直接在函数中通过print输出了出来。

    有的时候我们可能希望把结果拿出来,在函数外面来输出。

    更有时候,我们需要使用结果中的值,做一些额外的计算。
    比如这里想额外计算,
    n=10, 100, 1000, 10000, 100000时,不同S之间的差值(绝对值)。

    这个时候,就需要一种机制。
    将函数执行完的数据拿出来,拿到函数外面来使用。

    2 使用return

    把函数中的结果拿出来,
    一般使用return语句,此时叫把结果返回出来,这个结果又叫做返回值。

    修改calculate_sumget_sum函数,将结果返回出来。
    其代码如下

    def get_sum(n):
        k = 1
        s = 0
        for i in range(n):
            s += k / (i + 1)
            k = -k
    
        return s
    

    而此时调用时,要得到返回值,需要用一个变量来接住。
    其调用代码示例:

    s1 = get_sum(100)
    

    此时s1就把函数中,执行完后的s的值拿到了。

    3 return说明

    return语句,是函数的返回语句,执行到这里函数直接终止并返回return后结果。

    return可以返回多个结果,此时会打包成元组返回。
    示例如下

    def cal_sum_and_diff(a, b):
        s = a + b
        d = a - b
        return s, d  # same as return (s, d)
    

    此时接收返回值可以用一个变量接收,也可以用对应个数个变量去接收。

    sd = cal_sum_and_diff(10, 5)  # sd: (15, 5)
    s, d = cal_sum_and_diff(10, 5)
    # s:15 , d: 5
    

    不写return,函数默认返回None(空值)。

    从某种角度来讲,
    函数可以看作是能计算出结果的表达式,
    所以可以将其赋值给变量。

    (当然,不赋值仅调用,函数也能运行。)

    如果是在交互式命令行中,不赋值仅调用函数,
    交互式命令行会自动将函数返回值展示出来。
    (如果返回值为None,交互式命令行就不展示)

    4 None说明

    None是空值,是一种特殊的数据类型。
    其布尔值为False
    一般条件判断语句中,判断一个变量是否为None
    可以使用==,

    if a == None:
        ...
    

    但更推荐使用is

    if a is None:
        ...
    

    最终代码

    def get_sum(n):
        k = 1
        s = 0
        for i in range(n):
            s += k / (i + 1)
            k = -k
    
        return s
    
    s0 = get_sum(10)
    s1 = get_sum(100)
    s2 = get_sum(1000)
    s3 = get_sum(10000)
    
    print("10->100    : %s" % (s1-s0))
    print("100->1000  : %s" % (s2-s1))
    print("1000->10000: %s" % (s3-s2))
    

    输出如下

    10->100    : 0.04253725867527436
    100->1000  : 0.004475251249627221
    1000->10000: 0.00044975250013601364
    
  • 相关阅读:
    Redis--过期键策略(惰性删除、定期删除)
    Redis--数据库(个数16、键空间、过期字典、过期策略)
    Redis--事件(serverCron)
    ArrayList是如何扩容的?
    Java的四大引用类型
    类加载机制,双亲委派模型及其优点
    GC调优思路
    modcount的作用
    JVM的常见的垃圾收集器
    什么是临界区?如何解决冲突(也就是临界区的调度原则)?
  • 原文地址:https://www.cnblogs.com/BigShuang/p/15570873.html
Copyright © 2020-2023  润新知