站长在线零基础Python完全自学教程23:函数的返回值、作用域和匿名函数

    时间: 浏览:991次  来源:站长在线
导读:欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第23课《函数的返回值、作用域和匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值、Python函数中的局部变量、Python函数中的全局变量、Python函数中的匿名函数等内容。

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 python完全自学教程》今天给大家分享的是第23课《函数返回值作用域匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值Python函数中的局部变量Python函数中的全局变量Python函数中的匿名函数等内容。


23.1、Python中函数的返回值

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python函数返回值》。本文的主要内容有:函数的返回值的含义、函数设置返回值的作用、return语句位置与多条 return语句的总结。


在前面的Python课程中,我们创建的函数都只是为我们做一些事,做完了就结束。但实际上,有时还需要对事情的结果进行获取。

列如,你在炒菜的时候发现没有盐了,你拿出2块钱,叫你儿子去楼下的小卖店买一包盐回来。在这个例子中,你给你儿子2块钱,就相当于调用函数参数传递。你儿子把这包盐买回来是目标,这时候这包盐就是返回值。

23.1.1、Python中函数的返回值的含义

Python中函数的返回值就是程序中函数完成一件事情后,最后给调用者的结果。

23.1.2、Python为函数设置返回值的作用

Python为函数设置返回值的作用就是将函数的处理结果返回给调用它的函数。

在Python中,可以在函数体内使用return语句为函数指定返回值。该返回值可以是任意类型,并且无论return语句出现在函数的什么位置,只要得到执行,就会直接结束函数的执行。

return语句的语法格式如下:

return [value]

其中,相关参数说明如下:

return:为函数指定返回值后,在调用函数时,可以把它赋给一个变量(如result),用于保存函数的返回结果。如果返回一个值,那么result中保存的就是返回的一个值,该值可以是任意类型。如果返回多个值,那么result中保存的是一个元组

value:可选参数,用于指定要返回的值,可以返回一个值,也可返回多个值。

站长在线特别提醒:当函数中没有return语句时,或者省略了return语句的参数时,将返回None,即返回空值

def a(x,y):
    num = x + y
    return
print(a(1,2))

运行结果为:

None
>>> 

print仅仅是打印在控制台,而return则是将return后面的部分作为返回值:作为函数的输出,可以用变量接走,继续使用该返回值做其它事。

函数需要先定义后调用,函数体中return语句的结果就是返回值。如果一个函数没有reutrn语句,其实它有一个隐含的return语句,返回值是None,类型也是'Nonetype'。

23.1.3、return语句位置与多条 return语句的总结:

1、python函数使用return语句返回 "返回值",可以将其赋给其它变量作其它的用处;

2、所有函数都有返回值,如果没有return语句,会隐式地调用 return None 作为返回值;

3、一个函数可以存在多条return语句,但只有一条可以被执行,如果没有一条reutrn语句被执行,同样会隐式调用return None作为返回值;

4、如果有必要,可以显式调用return None明确返回一个None(空值对象)作为返回值,可以简写为return,不过python中简洁即美德,所以一般能不写就不写;

5、如果函数执行了return语句,函数会立刻返回,结束调用,return之后的其它语句都不会被执行了(可用于结束代码块)。


23.2、在Python函数中的局部变量详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python函数中的局部变量详解》。本文的主要内容有:变量的作用域的概念、局部变量的概念、局部变量的举例。


要说起Python中的局部变量,首先要知道变量的作用域?那什么是变量的作用域呢?

23.2.1、变量的作用域的概念:

变量的作用域是指变量有效作用的区域, 如果超出该区域,再次访问时就会出错。

按照作用域的不同,变量可分为局部变量和全局变量

在本文中,我们学习局部变量。

23.2.2、局部变量的概念:

局部变量是指在函数内部定义并使用的变量,只能在函数内部使用有效。

怎么理解这句话呢?

这样说吧:函数内部的名字,只是在函数运行时才会创建,在函数运行之前或者运行结束之后,所有的名字都将不存在。如果函数外部使用函数内部定义的变量,就会出现NameError错误。

23.2.3、局部变量的举例:

下面举一个例子来说明:

定义一个函数为a ,在该函数内部定义一个变量b(局部变量),并为变量b赋值,然后输出该变量,最后在函数外部输出该变量,代码如下:

def a():                                   # 定义一个名称为a()的函数
    b = "我爱Python,我在学学习Python!"   # 给内部自定义变量b赋值
    print('函数内部局部变量b=',b)          # 输出函数内部局部变量的值
a()                                        # 调用该函数
print('函数外部局部变量b=',b)              # 输出函数外部局部变量的值

运行结果如下:

函数内部局部变量b= 我爱Python,我在学学习Python!
Traceback (most recent call last):
  File "D:\Python\Python310\Doc\000.py", line 5, in <module>
    print('函数外部局部变量b=',b)              # 输出函数外部局部变量的值
NameError: name 'b' is not defined
>>> 

根据上面的结果,我们看见了两个不同的输出结果,第一个输出是正确的,没有任何问题,但是第二个输出就会出现“NameError”错误了。

翻译“name 'b' is not defined”的意思是:未定义名称“b”,也就是说访问的变量b不存在。

23.3、在Python函数中的全局变量详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中的局部变量详解》。本文的主要内容有:什么是全局变量、在函数外部定义的变量是全局变量、在函数内部定义中添加global关键词后变成全局变量。


我们在上节课程《在Python函数中的局部变量详解》中,说到了局部变量,这个非常的简单,局部变量是指在函数内部定义并使用的变量,只能在函数内部使用有效。本节课就来讲解一下全局变量。

23.3.1、什么是全局变量?

在Python中,全局变量指的是可以作用于函数内部和外部的变量。

在这里有两种情况:在函数的外部定义和内部定义添加global关键词变成全局变量。

接下来,站长在线将一一解读这两种情况。

23.3.2、在函数外部定义的变量是全局变量。

假设一个变量在函数的外部定义,那么这个函数就可以在函数的内部访问,也可以在函数的外部的访问。

示例:定义一个全局变量b,然后定义一个函数a,最后在该函数的内部和外部输出全局变量m的值,代码如下:

b  = '我爱Python,我在学习Python!'      # 定义全局变量
def a():                                 # 定义函数
    print('函数内部全局变量b=',b)        # 在函数内部输出全局变量
a()
print('函数外部全局变量b=',b)            # 在函数外部输出全局变量

运行结果如下:

函数内部全局变量b= 我爱Python,我在学习Python!
函数外部全局变量b= 我爱Python,我在学习Python!
>>> 

23.3.3、在函数内部定义中添加global关键词后变成全局变量。

在Python中,内部定义的函数中,添加关键词global后,改变量就变成了全局变量。在函数的外部也可以访问到该变量,同时还可以在函数的内部进行修改。

示例:定义相同名称不同内容的全局变量和局部变量b,并输出它们的值:

b  = '我爱Python,我在学习Python!'      # 定义全局变量
print('函数外部全局变量b=',b)            # 在函数外部输出全局变量
def a():                                 # 定义函数
    b  = '人生苦短,我用Pyhon!'         # 定义局部变量
    print('函数内部局部变量b=',b)        # 在函数内部输出全局变量
a()                                      # 调用函数
print('函数外部全局变量b=',b)            # 在函数外部输出全局变量

运行结果如下:

函数外部全局变量b= 我爱Python,我在学习Python!
函数内部局部变量b= 人生苦短,我用Pyhon!
函数外部全局变量b= 我爱Python,我在学习Python!
>>> 

从上面的结果可以看出,内部变量(局部变量)可以和外部变量(全局变量)重名,不影响全局变量的值。

当然在函数内部变量前面添加关键字global,就变成了全局变量了,代码如下:

b  = '我爱Python,我在学习Python!'      # 定义全局变量
print('函数外部全局变量b=',b)            # 在函数外部输出全局变量
def a():                                 # 定义函数
    global b                             # 添加global关键字
    b  = '人生苦短,我用Pyhon!'         # 定义局部变量
    print('函数内部全局变量b=',b)        # 在函数内部输出全局变量
a()                                      # 调用函数
print('函数外部全局变量b=',b)            # 在函数外部输出全局变量

运行结果如下:

函数外部全局变量b= 我爱Python,我在学习Python!
函数内部全局变量b= 人生苦短,我用Pyhon!
函数外部全局变量b= 人生苦短,我用Pyhon!
>>> 

从上面的结果可以看出,在函数的内部也可以修改全局变量的值。但是,站长在线在这里有一个提醒:

站长在线提醒:虽然在Python里面可以让全局变量和局部变量重名,但是,我们在实际开发中,尽量避免两个变量重名,免得搞混、出错。

23.4、Python函数中的匿名函数

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python函数中的匿名函数详解》。本文的主要内容有:匿名函数的定义、匿名函数的表达式、匿名函数的注意点、匿名函数的优点、匿名函数的应用举例。


23.4.1、匿名函数的定义

所谓匿名函数就是没有名字的函数,在Python中使用lambda表示创建匿名函数。

23.4.2、匿名函数的表达式

name = lambda [arg1 [,arg2,...,argn]]:expression

相关参数如下:

name:用于调用lambda表达式。

[arg1 [,arg2,...,argn]]:可选参数,用于指定要传递的参数列表,多个参数间使用逗号“,”分隔。

expression:必选参数,用于指定一个实现具体功能的表达式。如果有参数,那么在该表达式中将应用这些参数。

23.4.3、匿名函数的注意点

lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。lambda 函数不能包含命令,包含的表达式不能超过一个。

23.4.4、匿名函数的优点:

23.4.4.1、使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。

23.4.4.2、对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题

23.4.4.3、使用lambda在某些时候然后代码更容易理解

示例:求一个两个函数之和的函数,普通的函数定义如下:

def add(x, y):
    return x+ y
print(add(1,2))

运行结果为:

3
>>> 

使用匿名函数简化为:

add = lambda x,y:x+y
print(add(1,2))

运行的结果为:

3
>>> 

23.4.5、匿名函数的应用举例

内置函数 max() 求最大值,min()求最小值sort()排序,map() 映射, reduce 合并, filter() 过滤等经常应用到。

本文以使用lambda表达式实现对学生成绩列表的排序为例,讲解匿名函数的应用。

列:定义一个保存学生成绩的列表,每个学生的信息保存在一个字典中,根据学生的成绩排序。

student = [
    {'id': '001', 'name': '张三', '语文': 95, '数学': 98, '外语': 90},
    {'id': '002', 'name': '李四', '语文': 90, '数学': 92, '外语': 88},
    {'id': '003', 'name': '王五', '语文': 92, '数学': 93, '外语': 96},
    {'id': '004', 'name': '赵六', '语文': 91, '数学': 90, '外语': 86}
    ]   # 保存学生成绩的列表
student.sort(key=lambda x :x['语文']+x['数学']+x['外语'],reverse = True)# 按总成绩排序
for item in student:  # 遍历输出排序结果
    print(item)

运行结果如下:

{'id': '001', 'name': '张三', '语文': 95, '数学': 98, '外语': 90}
{'id': '003', 'name': '王五', '语文': 92, '数学': 93, '外语': 96}
{'id': '002', 'name': '李四', '语文': 90, '数学': 92, '外语': 88}
{'id': '004', 'name': '赵六', '语文': 91, '数学': 90, '外语': 86}
>>> 

到此为止,有关函数的相关知识就讲解完成了。

本文地址:https://www.olzz.com/python23.html
码字不易,打个赏呗
杨泽业感谢你的支持!

猜你喜欢

PHP8的匿名函数-PHP8知识详解

导读:PHP8引入了匿名函数(AnonymousFunctions),它是一种创建短生命周期的函数,不需要命名,并且可以在其作用域内直接使用。以下是在PHP8中使用匿名函数的知识要点。

2023-08-27  分类:PHP学堂  浏览:306次


函数的参数传递和返回值-PHP8知识详解

导读:本文学习的是《PHP8知识详解》中的《函数的参数传递和返回值》。主要包括:向函数传递参数值、向函数传递参数引用、函数的返回值。

2023-08-23  分类:PHP学堂  浏览:287次


域名pythonw.cn出售

域名pythonw.cn的详细信息:Python网

2022-08-06  分类:域名出售  浏览:1096次


站长在线Python教程:Python中类定义详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中类定义详解》。

2022-02-23  分类:Python学堂  浏览:1303次


站长在线Python教程:python中面向对象相关概述详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《python中面向对象相关概述详解》。本文的主要内容有:面向对象是什么、面向对象中的对象是什么、Python中的类是什么、面向对象编程的特点有哪些?

2022-02-14  分类:Python学堂  浏览:1130次


站长在线零基础Python完全自学教程23:函数的返回值、作用域和匿名函数

导读:欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第23课《函数的返回值、作用域和匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值、Python函数中的局部变量、Python函数中的全局变量、Python函数中的匿名函数等内容。

2022-02-09  分类:Python学堂  浏览:992次


站长在线Python教程:Python函数中的匿名函数详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python函数中的匿名函数详解》。本文的主要内容有:匿名函数的定义、匿名函数的表达式、匿名函数的注意点、匿名函数的优点、匿名函数的应用举例。

2022-02-01  分类:Python学堂  浏览:1136次


站长在线Python教程精讲:在Python函数中的全局变量详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中的全局变量详解》。本文的主要内容有:什么是全局变量、在函数外部定义的变量是全局变量、在函数内部定义中添加global关键词后变成全局变量。

2022-01-10  分类:Python学堂  浏览:1201次


站长在线Python教程精讲:在Python函数中的局部变量详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python函数中的局部变量详解》。本文的主要内容有:变量的作用域的概念、局部变量的概念、局部变量的举例。

2022-01-06  分类:Python学堂  浏览:1122次


Python常用英语及用法

站长在线站长,准备系统的学习Python知识,但是对我来说,英语实在是太差了,当然我知道的是,不仅仅我,很多人在学习Python的时候,也是不知道这些英语单词的意思与用法的,在这里站长在线站长就把这些英语整理出来,把英语以及中文意思、用法一起贴出来,让大家一起来学习。

2022-01-02  分类:Python学堂  浏览:1353次