Python语法基础(三)

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

我们这篇文章来说一下函数的返回值匿名函数

函数的返回值

我们先来看下面的这一段函数的定义代码

# 1、返回值的意义
def func1():print('111111111------start')num1=66print('111111111------end')

由于我们学过一些python的基本知识(前面的文章中),所以,我们可以很清楚的明白这段代码所打印出来的结果。

而当我们这个时候想要打印这个函数内部的变量的时候,直接打印是不可以的。

print(num1) # 访问不了的,会报错

这个会进行报错,原因是因为定义在函数内部的变量,只能在当前函数的内部调用。当出了这个变量的作用域的时候,这个变量会进行销毁。

那么我们应该怎么操作来调用到这个变量呢?这个时候就需要用到返回值了

我们来看下面的这一段代码

# a.
def func1():print('111111111------start')num1=66print('111111111------end')return num1
# 调用函数
f1=func1() # 调用了func1的函数,同时将func1函数额返回值赋值给f1
print('返回值:',f1)
print(func1()+10) # 调用了func1函数,并把返回值和10相加
func1() # 不需要在函数外面使用函数的返回值

在这段代码当中,我们就用到了返回值,并使用返回值使得func1中的变量得到打印。

那如果我们未设置返回值,那么会打印出来什么呢?

我们来看这一段代码:

# 未设置返回值
# 注意,如果一个函数未通过return来设置返回值,默认的返回值为None
def func2():print('22222')
r2 = func2()
print(r2) # None: 空值

在这段代码中,我们调用了func2函数,并用r2来想要接收它的返回值。

但是当我们打印r2的时候,却发现,结果是None

所以这段代码,其实等价于下面的这段代码。

# 等价于
def func2():return None

这两段代码,都是将返回值设置为了空。

需要注意的是:

return只能使用在函数中,表示结束函数。

在函数中,和return平级【对齐】的情况下,return后面不写任何语句,否则均为无效。

我们看这段代码:

def func3():print('start-------')returnprint('end--------') # 这句代码不能执行,永远没有执行的可能性
func3() # start-------

我们可以看到的是,这个return后面的代码是不会执行的。

但是,下面的这段代码,却有执行的可能性,因为条件判断语句的存在,可真可假。

def func32(n):print('start-------')if n %2==0:returnprint('end---------') # 有执行的可能性
func32(7)

return xxx 表示结束函数 

我们来看下面的这一段代码

return xxx表示结束函数,同时将xxx数据返回到调用函数处

def func33(a,b):total=a+breturn total
r33=func33(4,5)
print(r33)

 在同一个函数中,根据条件的区分,可以设置多个return xxx

def compare(num1,num2):if num1>num2:return 1elif num1<num2:return 2else:return 3
com=compare(4,5)
print(com)def compare(num1,num2):if num1>num2:return 1elif num1<num2:return 2return 3
com=compare(4,5)
print(com)

这两段代码是完全等效的。

看到这里,其实return的用法我们已经说了很大的一部分了,那么接下来,我们说一下如果一下子返回多个数的情况。

我们来看下面的这一段代码:

def func34():return 1,2,3,4,5
r34=func34()
print(r34) # (1, 2, 3, 4, 5) 打包,结果是一个元组

这个代码在执行之后,打印出来的是一个元组,这是因为将返回值进行了打包

接下来,我们谈一下break和return的区别

# d. break 和 return的区别
def func41():print('start----111111')for n in range(3):for m in range(5):print(n,m)if m==1:break # break只能使用在循环中,结束当前循环print('end-----1111111')
func41()
print('*' * 50)
def func41():print('start----111111')for n in range(3):for m in range(5):print(n,m)if m==1:return # return 只能使用在函数中,表示结束函数,无论多少循环print('end-----1111111')
func41()

break只能使用在循环当中,结束当前循环,而return只能使用在函数中,表示结束函数。

函数封装的注意事项:

  • 观察需求,是否有未知项参与运算,如果有,那么将未知项设置为参数
  • 观察需求,函数执行完毕后,是否有结果,如果有结果,则将结果设置为返回值

匿名函数

语法 lambda 形参:返回值

我们来看几个例子:

def add(n):return n+10
# 调用函数并获取返回值
f=add(5)
print(f)

这是我们定义的一个普通的add函数


# 定义函数/创建函数
f1 = lambda n:n+10
print(f1) # <function <lambda> at 0x000001E3F3528860>
# 调用函数并获取返回值
print(f1(2))
r2=f1(5)

这是我们定义出来的一个完全等效的匿名函数。

我们再来举一个例子:


def check1(a,b):return a**2+b**2
r1=check1(4,5)
print(r1)f2=lambda a,b:a**2+b**2
r2=f2(4,5)
print(r2)

上面的那个是原本的函数,下面的那个是等效出来的匿名函数。

匿名函数的使用:

常常将匿名函数作为另一个函数的参数使用

列表,sort(key,reverse)

如果列表中的元素支持大小比较,那么默认会直接排序。

numlist=[23,6,7,5,2,7,9,5,8,6]
numlist.sort(reverse=True)
print(numlist)

如果列表中的元素无法直接比较大小的时候,或者需要自定义排序的规则时,则给key赋值一个函数即可

将列表中的元素依次传递给func函数,该函数的返回值就是指定的排序的规则,一定要注意的是,这个返回值必须可以比较大小。

def rule(x):print(x)return x

但是,我们也可以使用匿名函数

students.sort(key=lambda stu_dict:stu_dict['score'],reverse=True)

这个我们一般经常使用。

好了,这次的内容就到这里,我们下次再见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Pycharm安装manim

由于版本和工具的差异&#xff0c;manim的安装方式不尽相同。本文用Pycharm来安装manim. 一、准备工作&#xff1a;安装相应版本的python、pycharm和ffmpeg. 此处提供一种安装ffmpeg的方式 下载地址&#xff1a;FFmpeg 下载后&#xff0c;解压到指定目录。 配置环境变量&am…

【线程】Java多线程代码案例(2)

【线程】Java多线程代码案例&#xff08;2&#xff09; 一、定时器的实现1.1Java标准库定时器1.2 定时器的实现 二、线程池的实现2.1 线程池2.2 Java标准库中的线程池2.3 线程池的实现 一、定时器的实现 1.1Java标准库定时器 import java.util.Timer; import java.util.Timer…

云原生时代的轻量级反向代理Traefik

Traefik 是一个用于路由和管理网络流量的反向代理&#xff0c;同时也是一个支持多种协议&#xff08;HTTP、HTTPS、TCP、UDP&#xff09;的负载均衡器。它通过自动服务发现和动态配置&#xff0c;帮助开发者和运维团队轻松管理复杂的应用架构。 Traefik 的主要特点如下&#x…

JavaEE---计算机是如何工作的?

1.了解冯诺依曼体系结构 2.CPU的核心概念,CPU的两个重要指标(核心数和频率) 3.CPU执行指令的流程(指令表,一条一条指令,取指令,解析指令,执行指令) 4.操作系统核心概念(管理硬件,给软件提供稳定的运行环境) 5.进程的概念(运行起来的程序和可执行文件的区别) 6.进程的管理(…

【C++】简单数据类型详解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;字符型&#xff08;char&#xff09;1.1 ASCII 码表 &#x1f4af;整型&#xff08;int&#xff09;2.1 整型的分类2.2 有符号和无符号整型2.3 跨平台差异2.4 整型数据类型…

Vue构建错误解决:(error TS6133)xxx is declared but its value is never read.

TypeScript会检查代码中未使用的变量&#xff0c;如果vscode安装了Vue的语法检查工具&#xff0c;会看到告警提示&#xff0c;再npm run build的时候&#xff0c;这个警告会变成错误 解决方案1&#xff1a;删除定义了未使用的变量 推荐使用这种方案&#xff0c;能保证代码的质…

泷羽sec---shell作业

作业一 写计算器 使用bc命令 需要进行安装bc 代码如下&#xff1a; #!/bin/bash echo "-----------------------------------" echo "输入 f 退出" echo "可计算小数和整数" echo "用法如&#xff1a;1.12.2" echo "------…

混淆零碎知识点

minifyEnabled true //混淆开关 zipAlignEnabled true // Zipalign优化 shrinkResources true // 移除无用的resource文件 &#xff08;必须要混淆开了之后才才可以设置为true&#xff09; proguard-rules.pro 为混淆文件 //整个文件保留 不被混淆 -keep class com.cn…

DeSTSeg: Segmentation Guided Denoising Student-Teacher for Anomaly Detection

DeSTSeg: Segmentation Guided Denoising Student-Teacher for Anomaly Detection 清华、苹果 个人感觉 Introduction 很自然的让读者理解作者问题的提出&#xff0c;也有例子直接证明了这个问题的存在&#xff0c;值得借鉴&#xff01;&#xff01; Related work写的也很不…

第T9周:Tensorflow实现猫狗识别(2)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Tensorflow 2.10.0 &#xff08;二&#xff09;具体…

分布式锁的实现原理

作者&#xff1a;来自 vivo 互联网服务器团队- Xu Yaoming 介绍分布式锁的实现原理。 一、分布式锁概述 分布式锁&#xff0c;顾名思义&#xff0c;就是在分布式环境下使用的锁。众所周知&#xff0c;在并发编程中&#xff0c;我们经常需要借助并发控制工具&#xff0c;如 mu…

搭建帮助中心到底有什么作用?

在当今快节奏的商业环境中&#xff0c;企业面临着日益增长的客户需求和竞争压力。搭建一个有效的帮助中心对于企业来说&#xff0c;不仅是提升客户服务体验的重要途径&#xff0c;也是优化内部知识管理和提升团队效率的关键。以下是帮助中心在企业运营中的几个关键作用&#xf…

深入浅出剖析典型文生图产品Midjourney

2022年7月,一个小团队推出了公测的 Midjourney,打破了 AIGC 领域的大厂垄断。作为一个精调生成模型,以聊天机器人方式部署在 Discord,它创作的《太空歌剧院》作品,甚至获得了美国「数字艺术/数码摄影」竞赛单元一等奖。 这一事件展示了 AI 在绘画领域惊人的创造力,让人们…

python+docx:(二)页眉页脚、表格操作

目录 页眉页脚 表格 表格样式 插入表格 插入行/列 合并单元格 单元格 页眉页脚 页眉页脚操作需要访问文件的section&#xff0c;可通过添加页脚来添加页码。 from docx import Document from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_ALIGN_PARAGRAPH, WD_CO…

Matlab Simulink 电力电子仿真-单相电压型半桥逆变电路分析

目录 一、单相电压型半桥逆变电路仿真模型 1.电路模型 2.电路模型参数 二、仿真分析 三、总结 1.优缺点 2.应用场景 一、单相电压型半桥逆变电路仿真模型 1.电路模型 单相电压型半桥逆变电路是一种常见的逆变电路&#xff0c;主要用于将直流电源转换为交流电源。 &…

C++入门——“C++11-lambda”

引入 C11支持lambda表达式&#xff0c;lambda是一个匿名函数对象&#xff0c;它允许在函数体中直接定义。 一、初识lambda lambda的结构是&#xff1a;[ ] () -> 返回值类型 { }。从左到右依次是&#xff1a;捕捉列表 函数参数 -> 返回值类型 函数体。 以下是一段用lam…

如何保护LabVIEW程序免遭反编译

在正常情况下&#xff0c;LabVIEW程序&#xff08;即编译后的可执行文件或运行时文件&#xff0c;如 .exe 或 .llb&#xff09;无法直接被反编译出源码。然而&#xff0c;有一些需要特别注意的点&#xff1a; 1. LabVIEW的编译机制 LabVIEW编译器会将源码&#xff08;.vi文件&a…

提升76%的关键-在ModelMapper中实现性能提升的几种方法

目录 前言 一、ModelMapper基础知识 1、深入ModelMapper 2、深入Configuration配置 3、深入MappingEngineImpl 二、默认加载模式 1、基础测试代码 三、持续优化&#xff0c;慢慢提升 1、增加忽略字段 2、设置忽略空值模式 3、设置命名模式 4、采用精准匹配模式 四、…

【C语言】结构体、联合体、枚举类型的字节大小详解

在C语言中&#xff0c;结构体&#xff08;struct&#xff09;和联合体&#xff08;union&#xff09; 是常用的复合数据类型&#xff0c;它们的内存布局和字节大小直接影响程序的性能和内存使用。下面为大家详细解释它们的字节大小计算方法&#xff0c;包括对齐规则、内存分配方…

【优选算法】位运算

目录 常见位运算总结1、基础位运算2、给一个数n&#xff0c;确定它的二进制位的第x位上是0还是13、将一个数n的二进制位的第x位改成14、将一个数n的二进制位的第x位改成05、位图的思想6、提取一个数n的二进制位中最右侧的17、将一个数n的二进制位中最右侧的1变为08、位运算的优…