当前位置: 首页 > news >正文

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)

这个我们一般经常使用。

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

相关文章:

Python语法基础(三)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 我们这篇文章来说一下函数的返回值和匿名函数 函数的返回值 我们先来看下面的这一段函数的定义代码 # 1、返回值的意义 def func1():print(111111111------start)num166print…...

云计算之elastaicsearch logstach kibana面试题

1.ELK是什么? ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写 Elasticsearch:负责日志检索和储存 Logstash:负责日志的收集和分析、处理 Kibana:负责日志的可视化 这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,…...

【已解决】git push需要输入用户名和密码问题

解决方法&#xff1a; 1&#xff09;查看使用的clone方式&#xff1a; git remote -v 2&#xff09;若为HTTPS&#xff0c;删除原clone方式: git remote rm origin 3&#xff09;添加新的clone方式&#xff1a; git remote add origin gitgithub.com:zludon/git_test.git …...

python的字符串处理

需求&#xff1a; 编写一个程序&#xff0c;输入一段英文句子&#xff0c;统计每个单词的长度&#xff0c;并将单词按照长度从短到长排序。 程序逻辑框图 1、用户输入一句英文句子。 2、对输入的句子进行预处理&#xff08;去空格并分割为单词列表&#xff09;。 3、统计每个单…...

【线程】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…...

虚拟机之间复制文件

在防火墙关闭的前提下&#xff0c;您可以通过几种不同的方法将文件从一个虚拟机复制到另一个虚拟机。这里&#xff0c;我们假设您想要从 IP 地址为 192.168.4.5 的虚拟机上的 /tmp 文件夹复制文件到当前虚拟机&#xff08;192.168.4.6&#xff09;的 /tmp 文件夹下。以下是几种…...

如何为 XFS 文件系统的 /dev/centos/root 增加 800G 空间

如何为 XFS 文件系统的 /dev/centos/root 增加 800G 空间 一、前言二、准备工作三、扩展逻辑卷1. 检查现有 LVM 配置2. 扩展物理卷3. 扩展卷组4. 扩展逻辑卷四、调整文件系统大小1. 检查文件系统状态2. 扩展文件系统五、处理可能出现的问题1. 文件系统无法扩展2. 磁盘空间不足3…...

Java算法OJ(11)双指针练习

目录 1.前言 2.正文 2.1存在重复数字 2.1.1题目 2.1.2解法一代码 解析&#xff1a; 2.1.3解法二代码 解析&#xff1a; 2.2存在重复数字plus 2.2.1题目 2.2.2代码 2.2.3解析 3.小结 1.前言 哈喽大家好吖&#xff0c;今天来给大家分享双指针算法的相关练习&…...

44.扫雷第二部分、放置随机的雷,扫雷,炸死或成功 C语言

按照教程打完了。好几个bug都是自己打出来的。比如统计周围8个格子时&#xff0c;有一个各自加号填成了减号。我还以为平移了&#xff0c;一会显示是0一会显示是2。结果单纯的打错了。debug的时候断点放在scanf后面会顺畅一些。中间多放一些变量名方便监视。以及mine要多显示&a…...

大语言模型LLM的微调代码详解

代码的摘要说明 一、整体功能概述 这段 Python 代码主要实现了基于 Hugging Face Transformers 库对预训练语言模型&#xff08;具体为 TAIDE-LX-7B-Chat 模型&#xff09;进行微调&#xff08;Fine-tuning&#xff09;的功能&#xff0c;使其能更好地应用于生成唐诗相关内容的…...

钉钉与企业微信机器人:助力网站定时任务高效实现

钉钉、企业微信机器人在网站定时任务中的应用&#xff0c;主要体现在自动化通知、提醒以及数据处理等方面。 以下是一些具体的应用场景&#xff1a; 1. 自动化通知 项目进度提醒&#xff1a;在蒙特网站所负责的软件开发或网站建设项目中&#xff0c;可以利用机器人设置定时任…...

自然语言处理工具-广告配音工具用于语音合成助手/自媒体配音/广告配音/文本朗读-已经解锁了 全功能的 apk包

Android -「安卓端」 广告配音工具用于语音合成助手/自媒体配音/广告配音/文本朗读。 广告配音工具&#xff1a;让您的文字“说话”&#xff0c;在这个快速发展的数字时代&#xff0c;广告配音工具为各种语音合成需求提供了一站式解决方案。无论是自媒体配音、商业广告配音、…...

深入解析注意力机制

引言随着深度学习的快速发展&#xff0c;注意力机制&#xff08;Attention Mechanism&#xff09;逐渐成为许多领域的关键技术&#xff0c;尤其是在自然语言处理&#xff08;NLP&#xff09;和计算机视觉&#xff08;CV&#xff09;中。其核心思想是赋予模型“关注重点”的能力…...

Unity图形学之雾Fog

1.设置雾化&#xff1a; 2.雾化变化曲线&#xff1a;FogMode &#xff08;1&#xff09;线性&#xff1a; &#xff08;2&#xff09;一次指数&#xff1a; &#xff08;3&#xff09;二次指数&#xff1a; Shader "Custom/FogTest" {Properties{_Color ("Color…...

【大数据学习 | Spark-Core】详解Spark的Shuffle阶段

1. shuffle前言 对spark任务划分阶段&#xff0c;遇到宽依赖会断开&#xff0c;所以在stage 与 stage 之间会产生shuffle&#xff0c;大多数Spark作业的性能主要就是消耗在了shuffle环节&#xff0c;因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。 负责shuffle…...

如何启动 Docker 服务:全面指南

如何启动 Docker 服务:全面指南 一、Linux 系统(以 Ubuntu 为例)二、Windows 系统(以 Docker Desktop 为例)三、macOS 系统(以 Docker Desktop for Mac 为例)四、故障排查五、总结Docker,作为一种轻量级的虚拟化技术,已经成为开发者和运维人员不可或缺的工具。它允许用…...

使用client-go在命令空间test里面对pod进行操作

目录 一、获取使用restApi调用的token信息 二、client-go操作pod示例 1、获取到客户端 2、创建pod 3、获取test命令空间的所有pod 4、获取某个具体pod的详细信息 5、更新pod 6、删除pod 三、总结 官方参考地址&#xff1a;https://kubernetes.io/docs/reference/kuber…...

Linux中网络文件系统nfs使用

一、nfs服务 NFS&#xff08;Network File System&#xff09; 是一种用于在网络中共享文件的协议&#xff0c;允许不同操作系统&#xff08;如 Linux、Unix、MacOS 等&#xff09;之间进行文件共享。 NFS 的工作原理基于客户端-服务器模型&#xff0c;服务器提供共享文件系统…...

气膜建筑:打造全天候安全作业空间,提升工程建设效率—轻空间

在现代建筑工程中&#xff0c;施工环境的管理和作业效率是决定项目进度和质量的关键因素。然而&#xff0c;施工过程中常常会受到天气变化的影响&#xff0c;诸如大风、雨雪、沙尘等恶劣天气常常延误工期&#xff0c;增加施工难度。为了解决这一问题&#xff0c;气膜建筑以其独…...

【HarmonyOS学习日志(10)】一次开发,多端部署之功能级一多开发,工程级一多开发

功能级一多开发 SysCap机制介绍 HarmonyOS使用SysCap机制&#xff08;即SystemCapability&#xff09;&#xff0c;可以帮助开发者仅关注设备的系统能力&#xff0c;而不用考虑成百上千种具体的设备类型。 在过去&#xff0c;开发不同设备上的应用就用不同设备的SDK进行开发&…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...