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.rhkb.cn/news/479925.html

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

相关文章

导入100道注会cpa题的方法,导入试题,自己刷题

一、问题描述 复习备考的小伙伴们&#xff0c;往往希望能够利用零碎的时间和手上的试题&#xff0c;来复习和备考 用一个能够导入自己试题的刷题工具&#xff0c;既能加强练习又能利用好零碎时间&#xff0c;是一个不错的解决方案 目前市面上刷题工具存下这些问题 1、要收费…

使用flink编写WordCount

1. env-准备环境 2. source-加载数据 3. transformation-数据处理转换 4. sink-数据输出 5. execute-执行 流程图&#xff1a; DataStream API开发 //nightlies.apache.org/flink/flink-docs-release-1.13/docs/dev/datastream/overview/ 添加依赖 <properties>&l…

【SpringBoot】28 API接口防刷(Redis + 拦截器)

Gitee仓库 https://gitee.com/Lin_DH/system 介绍 常用的 API 安全措施包括&#xff1a;防火墙、验证码、鉴权、IP限制、数据加密、限流、监控、网关等&#xff0c;以确保接口的安全性。 常见措施 1&#xff09;防火墙 防火墙是网络安全中最基本的安全设备之一&#xff0c…

java全栈day10--后端Web基础(基础知识)

引言&#xff1a;只要能通过浏览器访问的网站全是B/S架构&#xff0c;其中最常用的服务器就是Tomcat 在浏览器与服务器交互的时候采用的协议是HTTP协议 一、Tomcat服务器 1.1介绍 官网地址&#xff1a;Apache Tomcat - Welcome! 1.2基本使用(网上有安装教程&#xff0c;建议…

elasticsearch的索引模版使用方法

5 索引模版⭐️⭐️⭐️⭐️⭐️ 索引模板就是创建索引时要遵循的模板规则索引模板仅对新创建的索引有效&#xff0c;已经创建的索引并不受索引模板的影响 5.1 索引模版的基本使用 1.查看所有的索引模板 GET 10.0.0.91:9200/_index_template2.创建自定义索引模板 xixi &…

英语知识网站开发:Spring Boot框架应用

3系统分析 3.1可行性分析 通过对本英语知识应用网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本英语知识应用网站采用SSM框架&#xff0c;JAVA作为开发语…

Linux自动化构建-make/Makefile

目录 1. 背景2. 基本使用3. 推导过程4. 好用的操作5. 拓展语法 1. 背景 会不会写makefile&#xff0c;从⼀个侧⾯说明了⼀个⼈是否具备完成⼤型⼯程的能⼒⼀个⼯程中的源⽂件不计数&#xff0c;其按类型、功能、模块分别放在若⼲个⽬录中&#xff0c;makefile定义了⼀系列的规…

Ubuntu20.04+ROS 进行机械臂抓取仿真:环境搭建(一)

目录 一、从官网上下载UR机械臂 二、给UR机械臂添加夹爪 三、报错解决 本文详细介绍如何在Ubuntu20.04ROS环境中为Universal Robots的UR机械臂添加夹爪。首先从官方和第三方源下载必要的软件包&#xff0c;包括UR机械臂驱动、夹爪插件和相关依赖。然后&#xff0c;针对gazeb…

C++11(下)

C11&#xff08;下&#xff09; 1.条件变量2.包装器&#xff08;重要&#xff09;3.bind &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f680;系列专栏&#xff1a;【C的学习】 &#x1f4dd;&#x1f4…

【组件封装】uniapp vue3 封装一个自定义下拉刷新组件pullRefresh,带刷新时间和加载动画教程

文章目录 前言一、实现原理二、组件样式和功能设计三、scroll-view 自定义下拉刷新使用回顾相关属性&#xff1a;最终版完整代码&#xff1a; 前言 手把手教你封装一个移动端 自定义下拉刷新组件带更新时间和加载动画&#xff08;PullRefresh&#xff09;&#xff0c;以uniapp …

14、保存与加载PyTorch训练的模型和超参数

文章目录 1. state_dict2. 模型保存3. check_point4. 详细保存5. Docker6. 机器学习常用库 1. state_dict nn.Module 类是所有神经网络构建的基类&#xff0c;即自己构建一个深度神经网络也是需要继承自nn.Module类才行&#xff0c;并且nn.Module中的state_dict包含神经网络中…

【Threejs进阶教程-着色器篇】9.顶点着色器入门

【Threejs进阶教程-着色器篇】9.顶点着色器入门 本系列教程第一篇地址&#xff0c;建议按顺序学习认识顶点着色器varying介绍顶点着色器与片元着色器分别的作用Threejs在Shader中的内置变量各种矩阵gl_Position 尝试使用顶点着色器增加分段数增强效果 制作平面鼓包效果鼓包效果…

w058基于web的美发门店管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…

leetcode 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3…

VMware ubuntu创建共享文件夹与Windows互传文件

1.如图1所示&#xff0c;点击虚拟机&#xff0c;点击设置&#xff1b; 图1 2.如图2所示&#xff0c;点击选项&#xff0c;点击共享文件夹&#xff0c;如图3所示&#xff0c;点击总是启用&#xff0c;点击添加&#xff1b; 图2 图3 3.如图4所示&#xff0c;出现命名共享文件夹…

matlab 实现混沌麻雀搜索算法的光伏MPPT控制仿真

1、内容简介 略 103-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

Unity3D 截图

使用 Unity3D 自带的截图接口&#xff0c;制作截图工具。 截图 有时候我们想对 Unity 的窗口进行截图&#xff0c;如果直接使用一些截图工具&#xff0c;很难截取到一张完整分辨率的图片&#xff08;例如&#xff0c;我们想要截取一张 1920 * 1080 的图片&#xff09;。 其实…

STM32F10x 定时器

使用定时器实现&#xff1a;B5 E5的开关 添加相关的.h路径文件 添加相关的.c配置文件 led.h文件 用于声明LED函数 #ifndef __LED_H //没有定义__LED_H #define __LED_H //就定义__LED_H #define LED1_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5) #defi…

PMP好考吗,有多大的价值?

非常好考&#xff01;PMP目前大陆地区的笔试是只有选择题的&#xff0c;运气好的话 蒙一个都能对&#xff0c;所以PMP的通过率高&#xff0c;这也是很多人考了吐槽PMP没用&#xff0c;是“水证”&#xff0c;但是每年考PMP 的人不减反增&#xff0c;大家可以想一下&#xff0c;…

css:项目

这是一个完整的网站制作的流程 美工会先制作一个原型图&#xff1a; 原型图写的不详细&#xff0c;就是体现一个网页大致的布局 然后美工再做一个psd样例图片 然后再交给程序员 项目 模块化开发&#xff1a;把代码的不同的样式封装起来&#xff0c;需要用到相同样式的标签就…