Python从入门到精通七:Python函数进阶

函数多返回值

学习目标:

知道函数如何返回多个返回值

问: 如果一个函数如些两个return (如下所示),程序如何执行?

答:只执行了第一个return,原因是因为return可以退出当前函数,导致return下方的代码不执行

多个返回值

如果一个函数要有多个返回值,该如何书写代码?

按照返回值的顺序,写对应顺序的多个变量接收即可

变量之间用逗号隔开

支持不同类型的数据return

函数多种传参方式

学习目标:

  • 掌握位置参数
  • 掌握关键字参数
  • 掌握不定长参数
  • 掌握缺省参数
     

函数参数种类

使用方式上的不同, 函数有4中常见参数使用方式:

  • 位置参数
  • 关键字参数
  • 缺省参数
  • 不定长参数

位置参数

位置参数:调用函数时根据函数定义的参数位置来传递参数

注意:

      传递的参数和定义的参数的顺序及个数必须一致

关键字参数

关键字参数:函数调用时通过“键=值”形式传递参数.

作用: 可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求.

注意:

       函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

缺省参数

缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用).

作用: 当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值.

注意:

       函数调用时,如果为缺省参数传值则修改默认参数值, 否则使用这个默认值

不定长参数

不定长参数:不定长参数也叫可变参数. 用于不确定调用的时候会传递多少个参数(不传参也可以)的场景.

作用: 当调用函数时不确定参数个数时, 可以使用不定长参数

不定长参数的类型:

     ①位置传递

     ②关键字传递

位置传递

注意:

      传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递

关键字传递

注意:

      参数是“键=值”形式的形式的情况下, 所有的“键=值”都会被kwargs接受, 同时会根据“键=值”组成字典.

总结:

1. 掌握位置参数

     ·根据参数位置来传递参数

2. 掌握关键字参数

     ·通过“键=值”形式传递参数,可以不限参数顺序

      ·可以和位置参数混用,位置参数需在前

3. 掌握缺省参数

     ·不传递参数值时会使用默认的参数值

      ·默认值的参数必须定义在最后

4. 掌握不定长参数

     · 位置不定长传递以*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为args

      · 关键字不定长传递以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs

匿名函数

函数作为参数传递

在前面的函数学习中,我们一直使用的函数,都是接受数据作为参数传入:

  • 数字
  • 字符串
  • 字典、列表、元组等

其实,我们学习的函数本身,也可以作为参数传入另一个函数内。

如下代码:

函数compute,作为参数,传入了test_func函数中使用。

  • test_func需要一个函数作为参数传入,这个函数需要接收2个数字进行计算,计算逻辑由这个被传入函数决定
  • compute函数接收2个数字对其进行计算,compute函数作为参数,传递给了test_func函数使用
  • 最终,在test_func函数内部,由传入的compute函数,完成了对数字的计算操作

所以,这是一种,计算逻辑的传递,而非数据的传递。

就像上述代码那样,不仅仅是相加,相见、相除、等任何逻辑都可以自行定义并作为函数传入。

总结:

1. 函数本身是可以作为参数,传入另一个函数中进行使用的。

2. 将函数传入的作用在于:传入计算逻辑,而非传入数据。

lambda匿名函数

函数的定义中

  • def关键字,可以定义带有名称的函数
  • lambda关键字,可以定义匿名函数(无名称)

有名称的函数,可以基于名称重复使用。

无名称的匿名函数,只可临时使用一次。

匿名函数定义语法:

  • lambda 是关键字,表示定义匿名函数
  • 传入参数表示匿名函数的形式参数,如:x, y 表示接收2个形式参数
  • 函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码

如下图代码,我们可以:

通过def关键字,定义一个函数,并传入,如下图:

也可以通过lambda关键字,传入一个一次性使用的lambda匿名函数

使用def和使用lambda,定义的函数功能完全一致,只是lambda关键字定义的函数是匿名的,无法二次使用

总结:

1. 匿名函数使用lambda关键字进行定义

2. 定义语法:

3. 注意事项:

  • 匿名函数用于临时构建一个函数,只用一次的场景
  • 匿名函数的定义中,函数体只能写一行代码,如果函数体要写多行代码,不可用lambda匿名函数,应使用def定义带名函数
     

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

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

相关文章

(3)kylin系统部署weblogic项目

一、jdk迁移 1、拷贝成功后要配置环境变量 vi /etc/profile 将jdk的目录添加进去 2、将jdk安装目录拷贝后权限会发生变化, 要对jdk下bin目录中的所有文件修改权限: chmod x ./* 回车即可 ----------------------------- 环境变量 export …

DBeaver连接kingbase8(人大金仓)

DBeaver连接kingbase8(人大金仓) 1、添加驱动 步骤:选择"数据库-->驱动管理器" 类名:com.kingbase8.Driver URL模板:jdbc:kingbase8://{host}[:[{post}]/[{database}] 端口:54321 添加jar包 2、连接数据库 点击…

*上位机的定义

上位机是指在分布式控制系统中,负责监控和控制下位机(也称为远程终端设备)的计算机或者计算机网络。它通常是一个高性能的计算设备,运行着特定的监控软件,用于实时监测、控制和管理下位机设备。 上位机负责与各个下位…

Python 进阶(十六):二进制和ASCII码的转换(binascii 模块)

大家好,我是水滴~~ 本文详细介绍了Python中的binascii模块及其使用方法。通过binascii模块,我们可以方便地进行二进制和ASCII字符串之间的转换操作。文章中包含大量的示例代码,希望能够帮助新手同学快速入门。 《Python入门核心技术》专栏总…

【OPENGIS】Geoserver升级Jetty,不修改java版本

昨天搞了一个geoserver升级9.4.53版本的方法,但是需要修改java的版本,因为jetty官方网站下载的jar包是用jdk11编译的,如果不升级java版本,运行就会报错。 可是现场环境限制比较多,升级了java版本之后有些老版本的程序又…

【模拟】LeetCode-48. 旋转图像

旋转图像。 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6]…

Python 进阶(十五):Base64 编码和解码(base64 模块)

大家好,我是水滴~~ 本篇文章主要介绍Python的base64模块,主要内容有:Base64的概念、base64模块、base64编码和解码、以及其使用场景。文章中包含大量的示例代码,希望能够帮助新手同学快速入门。 《Python入门核心技术》专栏总目录…

ardupilot开发 --- git 篇

一些概念 工作区:就是你在电脑里能看到的目录;暂存区:stage区 或 index区。存放在 :工作区 / .git / index 文件中;版本库:本地仓库,存放在 :工作区 / .git 中 关于 HEAD 是所有本地…

C++类模板与友元的类内类外实现

全局函数类内实现-直接在类内声明友元即可全局函数类外实现-需要提前让编译器知道全局函数的存在 总结&#xff1a;建议全局函数做类内实现&#xff0c;用法简单&#xff0c;而且编译器可以直接识别 #include<iostream> using namespace std; #include<string>//…

逆序对的数量

归并排序模板题 相关文章 //采用归并排序,归并的过程可以算出逆序对的个数//所有的逆序对个数 /*排序后,两个数都在左边的逆序对数排序后,两个数都在右边的逆序对数如果一个数在左边,一个数在右边,在归并的过程中*/ //左边 < 右边,正常归并。如果左边 > 右边 //那么左边…

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

铭文是一种在比特币区块链上创造和传输非同质化代币&#xff08;NFT&#xff09;的技术&#xff0c;它利用Ordinal协议给每一聪比特币编上序号&#xff0c;并在区块里写入文字、图片、音频、视频等任意形式的信息&#xff0c;使每一聪都独一无二。 最近的铭文持续火爆&#xff…

【头歌系统数据库实验】实验9 SQL视图

目录 第1关&#xff1a;请为三建工程项目建立一个供应情况的视图V_SPQ&#xff0c;包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY) 第2关&#xff1a;从视图V_SPQ找出三建工程项目使用的各种零件代码及其数量 第3关&#xff1a;从视图V_SPQ找出供应商S1的供应情况 第4…

Java_EasyExcel_导入_导出Java-js

easyExcel导入 从easyexcel官网中拷贝过来&#xff0c;使用到的&#xff0c;这是使用监听器的方法。 EasyExcel.read(file.getInputStream(), BaseStoreDataExcelVo.class, new ReadListener<BaseStoreDataExcelVo>() {/*** 单次缓存的数据量*/public static final int…

C++ throw(抛出异常)详解

C 异常处理的流程&#xff0c;具体为&#xff1a; 抛出&#xff08;Throw&#xff09;--> 检测&#xff08;Try&#xff09; --> 捕获&#xff08;Catch&#xff09; 异常必须显式地抛出&#xff0c;才能被检测和捕获到&#xff1b;如果没有显式的抛出&#xff0c;即使…

深入理解强化学习——马尔可夫决策过程:策略迭代-[贝尔曼最优方程]

分类目录&#xff1a;《深入理解强化学习》总目录 当我们一直采取 arg ⁡ max ⁡ \arg\max argmax操作的时候&#xff0c;我们会得到一个单调的递增。通过采取这种贪心 arg ⁡ max ⁡ \arg\max argmax操作&#xff0c;我们就会得到更好的或者不变的策略&#xff0c;而不会使价值…

TrustGeo论文问题理解

1、网络空间测绘中&#xff0c;如何理解地标&#xff1f; 在网络空间测绘中&#xff0c;地标可以理解为在互联网空间中具有明显特征和稳定性的实体&#xff0c;它们可以作为网络空间的基准点&#xff0c;用于定位和标识其他网络实体。地标通常是在网络空间中具有较高价值和影响…

7-2 新奇偶分家

给定 N 个正整数&#xff0c;请按奇数和偶数将它们分开。 输入格式: 第一行给出一个正整数 N&#xff08;2≤N≤20&#xff09;。 第二行给出 N 个正整数&#xff0c;以空格分隔&#xff0c;保证其中既有奇数又有偶数。 输出格式: 按输入的先后顺序分别给出这 N 个正整数中…

2024世界燕窝滋补品展|上海燕博会推荐品牌天健燕窝集团-为消费者带来好燕窝!

天健燕窝集团拥有27年燕窝进出口贸易经验。是最早加入经营正规燕窝业务的企业之一&#xff0c;业务范围遍布全中国&#xff0c;2015 年至2019 年连续5年燕窝进口量全国第一。 一年一届的世界燕窝及天然滋补品博览会暨世界滋补生态发展大会&#xff08;简称上海燕博会&#xff…

ffmpeg相关命令

视频转码 dav转化为mp4格式 ffmpeg -i 2021-08-10.dav -codec copy 11.mp4二进制文件转为mp4格式 // -c:v 指定视频流编码器&#xff0c;不指定编码会默认用mp4这种容器的默认音视频编码进入编码 // copy&#xff1a;不重新编码直接copy源视频流ffmpeg -i 1701687125-4fc72a…

网格中的最小路径代价

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 问题描述 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 …