【Python】学习笔记——-5.2、返回函数

深入解析 Python 函数的返回值 返回值是函数完成其逻辑后返回给调用者的结果。通过 ​​return​​ 语句,Python 会将指定的值传递给函数调用的上下文。如果函数没有明确地返回值,Python 会默认返回 ​​None​​。Python 的函数返回值功能非常灵活,可以满足从简单到复杂的各种需求。什么是返回值,以及如何返回单一值、多值或容器类型。返回函数与生成器等高级用法。返回值的设计最佳实践。 阅读详情

函数作为返回值

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:

def calc_sum(*args):
    ax = 0
    for n in args:
        ax = ax + n
    return ax

但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数:

def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax = ax + n
        return ax
    return sum

当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数:

>>> f = lazy_sum(1, 3, 5, 7, 9)
>>> f
<function lazy_sum.<locals>.sum at 0x101c6ed90>

调用函数f时,才真正计算求和的结果:

>>> f()
25

在这个例子中,我们在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。

请再注意一点,当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数:

>>> f1 = lazy_sum(1, 3, 5, 7, 9)
>>> f2 = lazy_sum(1, 3, 5, 7, 9)
>>> f1==f2
False

f1()和f2()的调用结果互不影响。

闭包

注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。

另一个需要注意的问题是,返回的函数并没有立刻执行,而是直到调用了f()才执行。我们来看一个例子:

def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs

f1, f2, f3 = count()

在上面的例子中,每次循环,都创建了一个新的函数,然后,把创建的3个函数都返回了。

你可能认为调用f1(),f2()和f3()结果应该是1,4,9,但实际结果是:

>>> f1()
9
>>> f2()
9
>>> f3()
9

全部都是9!原因就在于返回的函数引用了变量i,但它并非立刻执行。等到3个函数都返回时,它们所引用的变量i已经变成了3,因此最终结果为9。

返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

如果一定要引用循环变量怎么办?方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变:

def count():
    def f(j):
        def g():
            return j*j
        return g
    fs = []
    for i in range(1, 4):
        fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f()
    return fs

再看看结果:

>>> f1, f2, f3 = count()
>>> f1()
1
>>> f2()
4
>>> f3()
9

缺点是代码较长,可利用lambda函数缩短代码。

小结

一个函数可以返回一个计算结果,也可以返回一个函数。

返回一个函数时,牢记该函数并未执行,返回函数中不要引用任何可能会变化的变量。

python小白必看,函数返回值 python小白必看,函数返回值前言一、返回一个值1. 一般运用一个变量来接收函数的返回2.返回值可以是 任意对象 如可以是函数3.如函数中仅仅写一个return,或者不写相当于return None4.return语句 后面的语句不会被执行二、返回多个值1.总结 前言 在函数中使用 return 函数返回值语句来返回一个值,如果需要返回多个值,则可以返回一个元组。 提示:以下是本篇文章正文内容,下面案例可供参考 一、返回一个值 返回值就是函数执行以后返回的结果 1. 一般运用一个变量来接收 阅读详情

相关推荐

python之函数的返回值

  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数返回值相关内容。 ...

jiankang66的博客 1万+

python中函数的返回值详解【超详细】

现实生活中的场景:我给儿子10块钱,让他给我买包烟。这个例子中,10块钱是我给儿子的,就相当于调用函数时传递到参数,让儿子买烟这个事情最终的目标是,让他把烟给你带回来然后给你对么,,,此时烟就是返回值开发中的场景:定义了一个函数,完成了获取室内温度,想一想是不是应该把这个结果给调用者,只有调用者拥有了这个返回值,才能够根据当前的温度做适当的调整综上所述:所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果。

weixin_68789096的博客 9320

python:返回值

1、函数体:函数被调用时执行的代码(用于实现某些功能的代码),由一行或多行语句组成,一般以return语句结束 ⑴return语句是函数体的一部分2、函数的作用一般是实现某种功能,在实现功能后可能需要返回一些结果(向调用方返回一些值) ⑴这个返回的结果(值)就是通过return语句来实现的 ⑵函数返回的结果(值)就叫做返回值,函数的返回值由return语句决定3、为什么要有返回值 ⑴如果我们需要在程序中拿到函数的处理结果或函数体中的一些数据,则可以通过return语句来返回这

不怕猫的耗子A 3万+

python中函数的返回值详解

python中函数的返回值详解

Python热爱者的博客 3356

【Python函数式编程⑤】——返回函数、闭包、装饰器、偏函数

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们在操作函数的时候,如果不需要立刻求和,而是在后面的代码中,根据需要再计算.

Python全栈系列 3万+

BEVFormer详解

BEVFormer 是将Transformer架构的自注意机制与BEV视图中3D检测结合起来的一种纯视觉目标检测方案。对于纯视觉的BEV检测方案,其中的重中之重就是如何将2D的图像特征映射到3D空间的BEV栅格,既然是映射关系,那就有前行投影和反向查询两种机制。前向投影是基于深度估计的方法,参考基于深度估计的BEV视图转换方法,典型代表为LSS。反向查询方法思路为先将BEV栅格在Z方向上进行lift提升,然后再映射到图像特征图上进行特征查询。BEVFormer 就是基于这种机制进行2D图像特征到3D空间的B

MAX的专栏 4745

python 编程 函数的返回值

本章将会讲解Python编程的返回值,以及它的值定义。

yj11290301的博客 6553

GEO数据挖掘实战:用R语言从GSE42872数据集中找到关键差异基因(附完整代码)

本文详细介绍了使用R语言从GSE42872数据集中挖掘关键差异基因的完整流程,包括数据下载、探针ID转换、差异表达分析和功能富集分析。通过实战代码演示,帮助生信研究者掌握GEO数据挖掘的核心技术,快速识别疾病相关基因并理解其生物学功能。

weixin_42625070的博客 365

Python函数(函数定义与使用,函数参数,函数的返回值)(学习笔记)

这里写目录标题一、函数的定义与使用1)函数的定义:2)函数的调用过程3)lambda函数二、函数的参数传递1)可选参数传递2)参数传递的两种方式三、函数的返回值 一、函数的定义与使用 1)函数的定义: 1、函数是一种功能抽象, 是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名完成功能调用。  2、函数也可以看作是一段具有名字的子程序,可以在需要的地方调用执行,不需要在每个执行地方重复编写这些语句。每次使用函数可以提供不同的参数作为输入,以实现对不同数据的处理。函数执行后,还可以反馈相

不吃辣的IT男 4669

lift off工艺为什么常用蒸发的方式镀膜?

电子束蒸发中,蒸发物质从源头直接升华并沿直线路径沉积到晶圆上,它可以避免金属在掩模侧壁的覆盖,只在表面进行沉积。在镀膜结束后,在进行光刻胶剥离时,去胶液无法与光刻胶接触反应,导致光刻胶剥离很困难。欢迎加入我的半导体制造知识星球社区,目前社区有1900人左右。我观察到晶圆厂中lift off工艺,镀膜都是用的电子束蒸发的方式,很少有用磁控溅射的方式,为什么?需要增加撕胶工序,将胶面上覆盖的膜层撕掉,使光刻胶露出,这样才容易剥离。上图为磁控溅射的膜层截面图,去胶液很难突破侧壁膜层,进行反应。

1685

手把手教你复现KDD 2024时空预测顶会论文:以UniST和ImputeFormer为例的代码实战与避坑指南

本文详细指导如何复现KDD 2024顶会论文中的UniST和ImputeFormer模型,涵盖环境配置、数据处理、模型训练及评估等关键步骤。通过实战案例和避坑指南,帮助研究者掌握时空预测与插补技术,提升在智慧城市、交通管理等领域的应用能力。

weixin_29204205的博客 279

Python函数返回值

Python的函数返回值,没啥好说的。注意一下啊下方代码,可以返回一个函数,嗯。。。还有这骚操作。。 # return 后边跟什么值,函数就会返回什么值 # return 后边可以跟任意的对象,返回值甚至可以是一个函数 def fn(): # return 'Hello' # return [1,2,3] # return {'k':'v'} def fn2(...

天上掉下两毛钱 1万+

32、社交媒体大数据中的情感分析与网络欺凌检测

本文探讨了社交媒体大数据在情感分析和网络欺凌检测中的应用。情感分析有助于应对自动化带来的社会变化、促进社会包容和推动环境保护。网络欺凌作为一种严重的在线危害,其检测依赖于数据预处理、特征提取与深度学习模型(如CNN、LSTM)进行分类。文章还总结了大数据在欺诈检测、医疗、制造、交通等领域的广泛应用,并分析了数据存储、处理速度、质量和技术工具等方面的挑战,提出了相应的应对策略。未来,随着技术进步,社交媒体大数据将在更多领域发挥关键作用。

cc789的博客 91

Python返回函数

在 Python 中,函数不仅可以作为参数传递,还可以作为返回值返回。这种特性使得函数更加灵活和强大,可以用于创建更复杂的程序逻辑。

2301_76387166的博客 1446

【C++】构造函数之初始化列表(Initialization list of constructors)

本讲主要是构造函数的初始化列表的讲节,但是本节很重要,可以关乎后面写项目

m0_62599305的博客 2233

STM32F401RCT6最小系统原理图设计

STM32F401RCT6最小系统原理图设计一、主控芯片二、电源电路三、晶振电路三、下载电路四、完整电路图      本文章基于STM32F401RCT6进行最小系统原理图设计,包含主控芯片,电源,晶振电路,下载电路等几部分 一、主控芯片 主控芯片采用STM32F401RCT6,需注意: VBAT在不接电池的情况下需接3.3V,VDDAVREF+需接3.3V,否则会造成芯片供电不正常,无法启动和识别的情况 VDDAVREF+和VCAP1处电容需按照规格书

weixin_43278295的博客 2万+

Python函数:函数的返回值return与多返回值

本文深入解析Python函数的返回值机制,主要涵盖以下核心内容: return的双重作用 终止函数执行 将值返回给调用者 未显式return的函数会隐式返回None 多返回值本质 实际上是返回一个元组 通过解包语法可分别接收多个值 常用于返回结果+状态、统计信息等场景 关键区分 print()与return的区别 函数内return与循环的结合 命名元组提升多返回值可读性 典型应用 提前终止函数 返回多个相关数据 结合元组解包接收返回值 使用命名元组增强代码可维护性 通过示例代码详细演示了各种返回值场景的正

输出倒逼输入,写作驱动成长。 4601

26.Labview波形图、XY图、强度图使用精讲

1. 波形图基础概念,如何使用,1.1 波形图与波形图表1.2 XY图如何设计、如何使用?1.3 强度图原理、如何使用、使用案例;2. 图形的参数设置2.1 波形图及波形图表的外观设计2.2 XY图的前面板设计2.3 强度图属性设置。

关注我,更多技术问题欢迎私聊~ 7501

python中函数return语句返回值是什么类型_python函数返回值是什么

函数返回值简介1、简单介绍print和return的区别,print仅仅是打印在控制台,而return则是将return后面的部分作为返回值:作为函数的输出,可以用变量接走,继续使用该返回值做其它事。2、函数需要先定义后调用,函数体中return语句的结果就是返回值。如果一个函数没有reutrn语句,其实它有一个隐含的return语句,返回值是None,类型也是'NoneType'。deffun...

weixin_39637233的博客 5213

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

python怎么调用函数的返回值_Python学习笔记之函数的参数和返回值的使用

01、函数参数和返回值的作用函数根据 有没有参数 以及 有没有返回值,可以相互结合,共有四种:无参数 无返回值无参数 有返回值有参数 无返回值有参数 有返回值定义函数时候,是否接收参数,或者时候返回结果,是根据实际功能需求决定的。如果函数内部处理的数据不确定,就可以将外界的数据以参数形式传递到函数内部。如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值。02、函数的返回值—进阶...

weixin_39742958的博客 3649

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python函数返回列表_python学习笔记之函数作为返回值

前面相对来说都还凑合,虽然有些细节的地方依然不是很明白,但是大概的思路觉得还是理解的,但是小编看到函数作为返回值这一块儿的时候,整体感觉有点懵,于是又看了一遍,觉得有必要认真做个学习笔记,记录自己在学习过程中的所得所惑,和大家一起分享。文章中提到“如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数!”这句话前面的都还好理解,到这句话的时候小编开始...

weixin_39683176的博客 151

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python函数返回值是什么

1、简单介绍print和return的区别,print仅仅是打印在控制台,而return则是将return后面的部分作为返回值:作为函数的输出,可以用变量接走,继续使用该返回值做其它事。2、函数体中没有return语句时,函数运行结束会隐含返回一个None作为返回值,类型是NoneType,与return 、return None 等效,都是返回 None。5、如果函数执行了return语句,函数会立刻返回,结束调用,return之后的其它语句都不会被执行了(可用于结束代码块)。上面函数的输出结果为:6。

hakesashou的博客 1414

【Python进阶篇】python之函数的返回值

返回值简介 简单介绍 print 和 return 的区别,print 仅仅是打印在控制台,而 return 则是将 return 后面的部分作为返回值作为函数的输出,可以用变量接走,继续使用该返回值做其它事。 函数需要先定义后调用,函数体中 return 语句的结果就是返回值。如果一个函数没有 reutrn 语句,其实它有一个隐含的 return 语句,返回值是 None,类型也是 'None...

Jian Sun_的博客 12万+

[Python学习笔记5]——函数

""" 显示简单的问候语 """")上面这段代码演示了最简单的函数结构,第一行代码使用关键字def来定义一个函数,def后面的为函数名,username叫做函数的形参,而'jesse'叫做实参。紧跟在后面的所有缩进行构成了函数体。""" 显示简单的问候语 """叫做文档字符串,描述的函数是做什么的,文档字符串用三引号括起,Python使用它们来生成有关程序中函数的文档。要使用这个函数,可调用它,依次指定函数名以及要传入括号中的参数。

matlabxiao1的博客 1716

python result函数用法,Python学习笔记之函数的参数和返回值的使用

01、函数参数和返回值的作用函数根据 有没有参数 以及 有没有返回值,可以相互结合,共有四种:无参数 无返回值无参数 有返回值有参数 无返回值有参数 有返回值定义函数时候,是否接收参数,或者时候返回结果,是根据实际功能需求决定的。如果函数内部处理的数据不确定,就可以将外界的数据以参数形式传递到函数内部。如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值。02、函数的返回值—进阶...

weixin_40009063的博客 1万+

Python之函数的返回值与嵌套函数

1.什么是返回值 返回值指的是函数返回的结果; return执行完毕后面的语句将不会再执行; def add(x, y): print(x, y) #输出:10 20 return x + y # 返回值, return以后的语句将不会再执行 print(x) print(y) add(10,20) 如果一个函数里面有两个return,前面retur...

qq_42992919的博客 1696
上一篇: 【Python】学习笔记——-5.1.3、高阶函数之sorted
下一篇: 【Python】学习笔记——-5.3、匿名函数
白衣染霜陈
博客等级 码龄22年 682粉丝 338原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值