返回值的作用类似于下面的场景:主管向员工下达命令,让其去打印文件,员工打印好文件后并没有完成任务,还需要将文件交给主管。
函数返回值
定义了函数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("可以换")
运行结果:不吃了
网友评论