【Python函数和类3/6】函数的返回值

目录

知识回顾

目标

函数的返回值

Tips

练习

​编辑return的其它特性

任意类型的返回值

返回多个值

return的位置

小结

局部变量

局部变量的作用域

全局变量

全局变量的作用域

同名变量

pi的作用域

总结

        


知识回顾

        在上篇博客中,我们学习给函数设置参数。在今天学习开始前,我们进行一个简单的复习。

        假设,一位农场主想要统计多个正方形圈地的面积大小,来决定种植什么蔬菜水果。用代码该如何实现呢?没错,我们可以定义⼀个计算⾯积的函数,然后进行调用就行了。

        如图,定义了计算圈地面积的函数,并进行调用。

        那如果我们需要通过土地的面积大小来判断是否可以种植西瓜,能用刚才的函数呢?如图,调用函数计算边长为13的圈地面积,并判断其值是否大于160,此时程序会报错。这是因为函数内数据被直接输出,没有传递到函数外,没办法用getArea(13)和160比较大小。

目标

        也就是说,到目前为止,我们创建的函数都是对数据进行处理,处理后使用print直接将结果输出。但是,在某些场景中,我们需要将函数处理的结果反馈回来,而非直接输出。那么今天,我们就来学习函数的返回值,并简单了解局部变量全局变量

函数的返回值

        返回值的作用类似于下面的场景:

        主管向员工下达命令,让其去打印文件,员工打印好文件后并没有完成任务,还需要将文件交给主管。

        下面,我们一起来学习函数的返回值

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

# 定义一个函数getArea,传入参数length
def getArea(length):
    area = length*length 
    return area

# 调用函数,再将结果赋值给变量result
result = getArea(13)
print(result)

return

        关键字return,将函数内的数据返回到调用函数的位置。示例中,会将计算好的面积值返回给第7行的getArea(13)。

返回值

        return后面是指定的返回值,返回值会返回到调用的地方。

调用有返回值的函数

        当定义有返回值的函数时,调用函数的代码getArea(13)等同于一个"变量",用于保存函数的返回值169。

Tips

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

练习

有返回值的函数

        定义了一个叫做 "sayHello" 的函数,该函数包含 1 个参数 name。该函数的功能是将 "Hello!" 与 name 进行字符串拼接,赋值给变量 result,并将 result 返回。传入参数"Mary" 调用该函数,并输出。

        字符串拼接示例:

        print("Hello!" + "Mary")

        输出结果:

        Hello!Mary

参考代码:

# 定义函数sayHello(),传入参数name
def sayHello (name):
    # 将"Hello!"与name字符串拼接,赋值给变量result
    result = "Hello!"+name
    # 返回变量result
    return result

# 调用sayHello(),传入"Mary",并输出
print(sayHello("Mary"))

运行结果:

return的其它特性

        刚才我们简单的了解了return的用法,它可以将函数内部的数据返回到函数外。除此以外,return还有一些其他重要的特性,让我们一起来了解一下吧~ 

任意类型的返回值

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

返回多个值

        如图所示,定义的函数用于计算出正⽅形的周长和面积,与我们刚才学到的函数不同,它返回了两个值。当函数要返回多个值时,返回值间以逗号,隔开。此时函数的返回值,会以元组的格式返回。

return的位置

        注意,return是函数结束的标志。函数内可以有多个return,但只要执行一次,整个函数就会结束运行。所以return的位置决定了函数能够执行到哪一步。

        下面,我们以函数中有循环语句为例,来讲解return位置的重要性。

        如图,函数内部有 for 循环,而return语句在循环外。在函数内,程序按照从上到下的顺序执行,所以程序会等 for 循环执行完毕后,再执行 return 语句。因此,最后函数返回了列表中全部元素的和6。

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

小结

        至此,我们就学完了函数中return的常见用法。在这里,回顾一下 print 和 return 的区别。简单来说,使用print的函数,会将结果直接输出,是为了显示信息。使用return的函数,是为了返回结果。并且返回值可以用变量接走,继续使用该返回值做其它事。

        那为什么不将函数中的数据保存到变量中,而是通过return将值返回到函数外呢?这是因为有些变量只在函数内有效,无法将数据传递到函数外。所以,我们使用函数时,要注意不同变量的有效范围,即变量的作用域

局部变量

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

        定义了函数getArea,并调用该函数,最后输出。第3行,定义了一个新的变量area,并计算。

# 定义一个函数getArea,传入参数length
def getArea(length):
    area = length*length 
    return area

# 传入参数13调用函数,并输出
print(getArea(13))

局部变量

        简单来说,局部变量就是在函数内部定义的变量。局部变量只能在函数内部使用,出了函数就不能使用。

局部变量的作用域

全局变量

        除了在函数内部定义变量,Python 还允许在所有函数的外部定义变量。我们把这样的变量,称为全局变量

        定义了全局变量pi和函数getArea,然后调用该函数并输出。

# 定义一个全局变量pi
pi = 3.14
# 定义一个函数getArea,传入参数radius
def getArea(radius):
    area = pi*radius*radius 
    return area

# 传入参数2调用函数,并输出
print(getArea(2))

全局变量

        简单来说,全局变量就是在函数外部定义的变量。全局变量不仅能在函数内部使用,也能在函数外部使用。

全局变量的使用

        第5行的pi,虽然在函数内部,但是它只是被使用而非定义,所以它还是原来的全局变量。

        注意:只有在函数内被定义的变量才是局部变量

全局变量的作用域

同名变量

        如图,第1和第3行都定义了变量pi,但是本质上他们不是同一个变量。

        因为第3行的pi在函数内重新定义了,属于局部变量,不论如何赋值都不会影响到第1行的全局变量pi的值

        所以,建议对全局变量和局部变量使用不同的变量名

pi的作用域

总结

        

相关推荐

  1. golang函数返回

    2024-04-12 05:52:01       66 阅读
  2. python】给函数参数返回标注类型

    2024-04-12 05:52:01       33 阅读
  3. 数学函数参数返回探秘

    2024-04-12 05:52:01       50 阅读
  4. python 函数-02-返回&注释格式

    2024-04-12 05:52:01       40 阅读
  5. 函数返回

    2024-04-12 05:52:01       110 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 05:52:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 05:52:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 05:52:01       82 阅读
  4. Python语言-面向对象

    2024-04-12 05:52:01       91 阅读

热门阅读

  1. 一种无OS的MCU实用软件开源框架

    2024-04-12 05:52:01       35 阅读
  2. 大数据之kafka应用

    2024-04-12 05:52:01       37 阅读
  3. (最新)itext7 freemarker动态模板转pdf

    2024-04-12 05:52:01       34 阅读
  4. jodconverter+openOffice word文档pdf转换

    2024-04-12 05:52:01       39 阅读
  5. Spring Cloud启动类上的注解详解

    2024-04-12 05:52:01       34 阅读
  6. SpringMVC原理分析(十二)--异常处理流程

    2024-04-12 05:52:01       28 阅读
  7. 浅谈:从医疗元宇宙向更多实业领域的拓展

    2024-04-12 05:52:01       38 阅读
  8. Flask、Django和Tornado怎么选

    2024-04-12 05:52:01       33 阅读