Python学习24 : 函数的返回值

2024-09-02  本文已影响0人  简洁的书写

返回值的作用类似于下面的场景:主管向员工下达命令,让其去打印文件,员工打印好文件后并没有完成任务,还需要将文件交给主管。

函数返回值

定义了函数getArea,参数length用于接收数据,其功能为计算正方形面积,并将结果返回。
第7行,调用函数getArea,并将调用结果赋值给变量 result。
第8行,输出变量 result。

# 定义一个函数getArea,传入参数length
def getArea(length):
    area = length*length
    return area
# 调用函数,再将结果赋值给变量result
result = getArea(13)
print(result)

再次强调,当定义有返回值的函数时,调用函数的代码getArea(13)等同于一个变量。如图,如果我们只是调用该函数,不会有输出结果。我们可以使用print输出变量一样,将调用函数的代码输出

     return除了可以将函数内部的数据返回到函数外。return还有一些其他重要的特性。

任意类型的返回值,return的返回值没有类型限制,可以是一个变量名,一串字符串,甚至是一个表达式。

开饭了

定义一个函数 time,该函数包含 1 个参数 night,用于接收回家的时间点。该函数通过判断回家的时间点,来决定吃什么:

如果,时间点小于6,则返回 "回家做可乐鸡翅"

如果,时间点大于或等于6,则返回 "回家吃凉皮"

分两次调用函数并输出:

第一次,传入参数5调用该函数, 并输出。

第二次,传入参数7调用该函数, 并输出。

# TODO 定义一个函数time,传入参数night

def time(night):

    if night < 6:

        return "回家做可乐鸡翅"

    if night >= 6:

        return "回家吃凉皮"

# TODO 传入参数5调用该函数,并输出

print(time(5))

# TODO 传入参数7调用该函数,并输出

print(time(7))

    返回多个值

      定义的函数用于计算出正⽅形的周长和面积,它返回了两个值。当函数要返回多个值时,返回值间以逗号,隔开。此时函数的返回值,会以元组的格式返回。
   def getSize(length):
         perimeter = 4*length
         area = length*length
         return perimeter , area
   print(getSize(6))
最后运行显示的结果是(24,36)

return的位置

    注意,return是函数结束的标志。函数内可以有多个return,但只要执行一次,整个函数就会结束运行。所以return的位置决定了函数能够执行到哪一步。下面以函数中有循环语句为例,来讲解return位置的重要性。

     但是,如果 return 的位置在循环内部,当第1次循环时,就会执行到return语句。此时,整个函数就会结束运行,返回当前total的值1。
    

   回顾一下 print 和 return 的区别。简单来说,使用print的函数,会将结果直接输出,是为了显示信息。使用return的函数,是为了返回结果。并且返回值可以用变量接走,继续使用该返回值做其它事。

       那为什么不将函数中的数据保存到变量中,而是通过return将值返回到函数外呢?这是因为有些变量只在函数内有效,无法将数据传递到函数外。

       如图,我们在函数内定义并计算了变量area的值,但是在函数外print(area)会出现area未定义的报错。这是因为,在函数内部定义的变量,只能在函数内使用,出了函数就不能使用。这样的变量,称为局部变量。

    局部变量就是在函数内部定义的变量。局部变量只能在函数内使用,出了函数就不能使用。上图中的area就是局部变量。

  全局变量(Global Variable)除了在函数内部定义变量,Python 还允许在所有函数的外部定义变量,这样的变量称为全局变量。

定义了全局变量pi和函数getArea,然后调用该函数并输出。
简单来说,全局变量就是在函数外定义的变量。全局变量可以在函数内使用,也可以在函数外使用。
第5行的pi,虽然在函数内部,但是它只是被使用而非定义,所以它还是原来的全局变量。
注意:只有在函数内被定义的变量才是局部变量。

吃还是不吃

小倩和朋友去吃披萨,点了个12寸的,结果过了会儿服务员来了说:“不好意思现在做不了12寸了,您看换成两个6寸的可以吗?”

小倩会同意么,让我们编写程序来解决这个生活难题。

定义一个函数getArea,参数R用于接收半径的数据,参数pi作为圆周率π,设置默认值 3.14

该函数用于计算圆的面积,并将其返回。

然后分两次调用该函数:

第一次,传入参数 6(12寸pizza半径是6),赋值给变量bigSize;

第二次,传入参数 3(6寸pizza半径是3) ,赋值给变量smallSize。

如果 bigSize 大于两倍smallSize,输出“不吃了”;否则,输出“可以换”。

圆的面积: S = π*R*R

# TODO 定义函数getArea,用于计算圆的面积,并将其返回

def getArea(R,pi = 3.14):

    area = pi * R * R

    return area

# TODO 传入参数6调用该函数,赋值给变量bigSize

bigSize = getArea(6)

# TODO 传入参数3调用该函数,赋值给变量smallSize

smallSize = getArea(3)

# TODO 如果bigSize大于两倍smallSize,输出"不吃了";否则,输出"可以换"

if bigSize > 2*smallSize:

    print("不吃了")

else:

    print("可以换")

运行结果:不吃了

上一篇 下一篇

猜你喜欢

热点阅读