Python入门知识点分享——(十五)自定义函数

函数是一段事先组织好可重复使用的代码块,用于执行特定的任务。函数可以接受输入参数,并返回一个结果,从而提高应用的模块性和代码的重复利用率。先前我们已经介绍了Python中的内置函数,现在我们要学习创建自定义函数,在定义函数时需要用到关键字def。具体的语法规则如下:

  • 函数命名以def为起始,后接函数名称和参数
  • 参数必须放在小括号()内才能被函数体读取使用
  • 在函数命名行(第一行)的末尾要加上冒号 
  • 冒号后的函数体另起一行,不需要加括号,以缩进表示嵌套关系。
  • 函数应以“return 变量”结尾,会返回一个值给调用方,如果不加变量相当于无返回值

下面我以奇偶分类器为例,讲解函数的构成和用法。

def classify(num):odd = []even = []for i in num:if i % 2:odd.append(i)else:even.append(i)return odd, even
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(classify(lst))
([1, 3, 5, 7, 9], [2, 4, 6, 8])

首先以def作为开头,为了直观看出函数的作用,我们一般将函数用途作为名称,(num)是传入函数体一个叫做num的参数;之后我们创建了两个列表命名为odd和even,接下来是一个for循环,读取num中的每一个值,如果除以2余1,那就是奇数,添加进odd列表中,反之则加入even列表;最后是return返回了odd和even两个列表。

那我们怎样调用这个函数呢,其实很简单,我们创建了一个列表lst,作为序列数据类型,它符合classify对每个元素分类的要求,我们只需要像函数创建那样,将函数体后面的形式参数换成我们创建的具有实际数据的列表lst,之后打印结果就可以了。这里我们再补充一个形式参数和实际参数的概念:

形式参数是在函数定义时声明的变量,它用于接收调用函数时传递的实际参数。

实际参数是在调用函数时传递给函数的值。实际参数可以是常量、变量、表达式或其他函数调用的结果。

另外我们在函数定义时可以给参数赋初值,称为默认形参。默认参数可以有多个,但是默认参数后不能再出现无初值的非默认参数。由于默认参数的存在,我们在传递参数时也可以有多种方法。

def calc(a, b = 5):c = a + breturn c
result1 = calc(2, 3)
result2 = calc(10)
result3 = calc(b = 2, a = 4)
print(result1)
print(result2)
print(result3)
5
15
6

第一种就是最常用的依次赋值,实际参数会按照先后顺序依次赋值给形式参数,这里的实际参数称为必需参数,调用时要保证顺序和数量正确;第二种则是缺省参数,实际参数传给第一个形式参数,其他的则按照形式参数的默认值参与计算;第三种是主动赋值,又叫关键字参数,将形式参数和实际参数用赋值运算符连接,这样做的好处是赋值可以不同于函数声明时的参数顺序。

当我们不确定输入参数的个数时,可以使用不定长参数,它的定义方式是星号*加参数名。

def lst_append(parameter1, *parameters):a = [10, 20, 30]b = ['a', 'b', 'c']a.append(parameter1)b.append(parameters)print(a)print(b)lst_append(40, 'd', 'e')

 需要注意不定长参数会以元组的形式存放对应的实际参数。

[10, 20, 30, 40]
['a', 'b', 'c', ('d', 'e')]

今天我们介绍的只是函数的初级用法,作为Python的重要组成部分,它会在今后的学习过程中多次出现。不过伴随着学习的深入,我们终有一天可以揭下它的神秘面纱。祝大家在学习Python的道路上披荆斩棘,不遇bug。

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

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

相关文章

深度学习烦人的基础知识(2)---Nvidia-smi功率低,util高---nvidia_smi参数详解

文章目录 问题现象解释解决方案 磨刀不误砍柴工--nvidia-smi参数解读 问题 如下图所示,GPU功率很低,Util占用率高。这个训练时不正常的! 现象解释 Pwr是指GPU运行时耗电情况,如图中GPU满载是300W,目前是86W与GPU2的…

Springboot Jackson 序列化与反序列化配置

可解决在使用默认反序列化Jackson时,LocalDateTime类型的请求参数反序列化失败的问题 import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com…

JavaScript 异步编程解决方案-中篇

天下事有难易乎? 为之,则难者亦易矣;不为, 则易者亦难矣。人之为学有难易乎? 学之,则难者亦易矣;不学,则易者亦难矣。 async 函数 和promise then的规则一样 async function fun() …

SpringMVC(六)RESTful

1.RESTful简介 REST:Representational State Transfer,表现层资源状态转移 (1)资源 资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件…

Apache Answer,最好的开源问答系统

Apache Answer是一款适合任何团队的问答平台软件。无论是社区论坛、帮助中心还是知识管理平台,你可以永远信赖 Answer。 目前该项目在github超过10K星,系统采用go语言开发,安装配置简单,界面清洁易用,且开源免费。项目…

Spring Boot - Application Events 的发布顺序_ApplicationFailedEvent

文章目录 Pre概述Code源码分析 Pre Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent 概述 Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦&#…

go中常见的错误-以及泛型

https://github.com/teivah/100-go-mistakes#table-of-contents nil Map map记得要make初始化, slice可以不用初始化! func main() { //assignment to nil map var course map[string]string //如果不初始化,就会为nilcourse["name&quo…

开源云原生安全的现状

近年来,人们非常重视软件供应链的安全。尤其令人担忧的是开源软件发行版中固有的风险越来越多。这引发了围绕云原生开源安全的大量开发,其形式包括软件物料清单 (SBOM)、旨在验证 OSS 包来源的项目等。 许多组织循环使用大型开源包,但只使用…

openGauss学习笔记-196 openGauss 数据库运维-常见故障定位案例-强制结束指定的问题会话

文章目录 openGauss学习笔记-196 openGauss 数据库运维-常见故障定位案例-强制结束指定的问题会话196.1 强制结束指定的问题会话196.1.1 问题现象196.1.2 处理办法 openGauss学习笔记-196 openGauss 数据库运维-常见故障定位案例-强制结束指定的问题会话 196.1 强制结束指定的…

HTML--表单

睡不着就看书之------------------------ 表单 作用:嗯~~动态页面需要借助表单实现 表单标签: 主要分五种: form,input,textarea,select,option 从外观来看,表单就包含以下几种&…

SFP/SFP+/QSFP/QSFP+光模块和GTP/GTX/GTH/GTZ/GTY/GTM高速收发器

SFP/SFP/QSFP/QSFP光模块和GTP/GTX/GTH/GTZ/GTY/GTM高速收发器 SFP/SFP/QSFP/QSFP光模块概述SFPSFPQSFPQSFP关键参数说明 GTP/GTX/GTH/GTZ/GTY/GTM高速收发器区别XILINX 7系列FPGA中高速收发器使用 SFP/SFP/QSFP/QSFP光模块 概述 SFP( small form-factor pluggabl…

第 3 场 小白入门赛(1~6) + 第 3 场 强者挑战赛 (1 ~ 5)

第 3 场 小白入门赛 1、厉不厉害你坤哥(暴力) 2、思维 3、暴力,前缀和,贪心 4、二分 5、DP 6、容斥,双指针 第 3 场 强者挑战赛 2、BFS 5、树上倍增求第k祖先 1. 召唤神坤 题意: 可以发现,如果我…

【非监督学习 02】高斯混合模型

高斯混合模型(Guassian Mixed Model, GMM)也是一种常见的聚类算法,与K均值算法类似,同样使用了EM算法进行迭代计算。高斯混合模型假设每个簇的数据都是符合高斯分布的,当前数据呈现的分布就是各个簇的高斯分布叠加在一…

仿真验证方法(2)——静态验证

一、静态验证 1.1 概述 在之前的文章中,我们介绍了动态仿真,但是动态仿真用于百万门以上电路时所需时间极长,而且其功能覆盖率取决于所设计的输入激励向量,很难达到100%,因此静态时序分析和等效性检查这样的静态验证是…

强化学习应用(七):基于Q-learning算法的无人车配送路径规划(通过Python代码)

一、Q-learning算法介绍 Q-learning是一种强化学习算法,用于解决基于环境的决策问题。它通过学习一个Q-table来指导智能体在不同状态下采取最优动作。下面是Q-learning算法的基本步骤: 1. 定义环境:确定问题的状态和动作空间,并…

python图像处理总结

等我有时间了,好好总结一下这几个图像处理包,为后面的研究做个铺垫 skimage包 可以用系统自带的图片,不用自己找图片 from skimage.io import imread, imshow from skimage import data image data.astronaut() imshow(image)后面可以拿这…

【MySQL】创建和管理表

文章目录 前置 标识符命名规则一、MySQL数据类型二、创建和管理数据库2.1 创建数据库2.2 使用数据库2.3 修改数据库2.4 删除数据库 三、创建表3.1 创建方式一3.2 创建方式二3.3 查看数据表结构 四、修改表4.1 增加一个列4.2 修改一个列4.3 重命名一个列4.4 删除一个列 五、重命…

DCIM市场竞品分析报告

DCIM(Data Center Infrastructure Management) 市场竞品分析报告 一、引言 随着随着全球数字化转型的加速,数据中心基础架构管理(DCIM)行业正在快速发展。DCIM系统市场的增长为新的参与者提供了机会,对于新进入者如我们公司&am…

简单明了,汽车级LM317系列LM317D2TR4G线性电压稳压器电源设计-参数应用方案分享

低压差线性稳压器(LDO),是指一种具有恒定电流输出电压的装置,主要由输入变压器、整流器、输出变压器三部分构成,工业原理为将输入的交流电压经过整流、滤波后得到直流输出电压,再经过控制元件和开关器件将稳…

132基于matlab的采集信号模极大值以及李氏指数计算

基于matlab的采集信号模极大值以及李氏指数计算, 1)计算信号的小波变换。 2)求出模极大曲线。 3)计算其中两个奇异点的Lipschitz指数,程序已调通,可直接运行。 132matlab模极大曲线Lipschitz (xiaohongshu.com)