python学习——函数

一、函数的定义
函数就是执行特定任务和完成特定功能的一段代码。使用函数可以对代码进行复用,提高代码的可维护性和可读性,使得程序便于调试。
二、函数的创建
创建格式

#创建和格式
def 函数名([参数]:函数体[return xxx]

举例

#创建和格式
def sum (a,b):c=a+breturn cresult=sum(80,120)
print(result)

运行结果
在这里插入图片描述
三、参数的传递
(1)形式参数,简称为形参,形参出现的位置是在函数的定义处。
(2)实际参数,简称为实参,实参的出现位置实在函数的调用处。
(3)位置实参,根据形参对应的位置进行实参的传递。
(4)关键字实参,根据形参的名字进行实参传递。实参赋值给形参。采用了关键字赋值之后就不会再根据位置进行传递了。
形参和实参的名字可以不同。
在函数调用的过程中,进行参数的传递,如果是不可变序列,那么在函数体的修改不会影响到实参的值,如果是可变序列,那么在函数体的修改会影响到实参的值。就是说实参的值变不变取决于实参本身是可变序列还是不可变序列。
例如

def modify(a,b):print('a=',a)print('b=',b)a=100b.append(10)print('a=', a)print('b=', b)c=1
d=[2,3,4]
print('c=',c)
print('d=',d)
modify(c,d)
print('c=',c)
print('d=',d)

运行结果
在这里插入图片描述
四、函数的返回值
(1)如果函数不需要返回值,则可以省略return。
(2)如果函数需要返回值,如果是1个,那么直接返回原类型。
(3)如果函数有多个返回值,那么返回的结果为元组。
ps:0的布尔值为false,1的布尔值为true。
下面对数据进行分奇、偶操作。

#关于返回值的验证
def classfier(num):odd=[] #基数even=[]#偶数for i in num :if i%2:odd.append(i)else:even.append(i)return odd,evenlst=[i for i in range(10)]
print(classfier(lst))

运行结果
在这里插入图片描述
五、函数的参数定义
(1)函数在定义的时候,给形参设置默认值,那么当默认值与实参的值不同的时候,实参的值取代形参的值。
(2)个数可变的位置参数
如果说,在定义函数的时候,可能无法确定位置实参的个数,那么我们可以用可变的位置参数,具体的操作方法是使用*定义个数可变的位置形参,输出结果是一个元组。

#不确定实参个数def test(*a):print(a)test(1)
test(1,2)
test('hello','world','hello','python')

运行结果
在这里插入图片描述
(3)个数可变的关键字形参
同理,在函数定义的时候,事先无法确定所要传递的关键字实参的个数的时候,这时候我们就可以使用可变的关键字形参,具体操作方法是使用**,输出结果是一个字典。
例如

#关键字形参个数不确定
def test(**para):print(para)test(a=10)
test(a=10,b=20,c=30)

运行结果
在这里插入图片描述
注意
①可变的位置参数和可变的关键字参数只能有一个。
②当定义函数是既需要关键字形参,有需要位置形参的时候,那么要求位置形参放在第一个,关键字形参放在第二个。

def test(*a,**b):

(4)使用*可以将列表中的元素都转换为位置实参,使用两个星号可以将字典中的每个键值对都转换为关键字实参。

#转换为位置参数和关键字参数def test(a,b,c):print('a=',a)print('b=',b)print('c=',c)lst=[1,2,3]
test(*lst)dic={'a':10,'b':20,'c':30}
test(**dic)

运行结果
在这里插入图片描述
关键字形参和个数可变的位置形参都是使用*,个数可变的关键字形参要用两个星号。
例如

#传递一部分位置参数,传递一部分关键字参数
def test(a,b,*,c,d):#表示从c之后必须采用关键字参数print('a=', a)print('b=', b)print('c=', c)print('d=', d)test(a=10,b=20,c=30,d=40)
test(10,20,c=30,d=40)

运行结果
在这里插入图片描述
def test(a,b,*,c,d)这一部分指得是星号之后必须采用关键字传参。
六、变量的作用域
根据变量的作用范围可以将变量分为全局变量和局部变量。
在函数体内定义的变量是局部变量,顾名思义,作用范围是函数内部。在函数体外失去作用。
例如

#变量的作用域
def test(a,b):c=a+bprint(c)print(a)
print(b)
print(c)

发现报错
在这里插入图片描述
即在变量在函数体外失去定义。

现在把a,b改为全局变量

a=10
b=20
def addition():c=a+bprint(c)addition()

运行结果
在这里插入图片描述
也可以在函数体内定义全局变量,这时候需要加上global对这个变量进行说明。
例如不加global

def test(a,b):# global  cc=a+btest(10,20)
print(c)

运行结果
在这里插入图片描述
函数体内,变量前加上global

def test(a,b):global  cc=a+btest(10,20)
print(c)

运行结果
在这里插入图片描述
七、递归函数
(1)递归函数的定义
如果在一个函数的函数体内调用了函数的本身,那么这个函数就称为递归函数。
(2)递归函数主要是由递归调用和递归终止条件组成的,无递归终止条件,函数将会无限被调用。
例如,求阶乘就用到了递归函数。

#求阶乘
def fac(a):if a==1:return 1else:result=a*fac(a-1)return(result)print('6的阶乘是%d'%(fac(6)))

运行结果
在这里插入图片描述
八、总结

在这里插入图片描述

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

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

相关文章

MySQL:库的操作和表的操作(内含MySQL数据类型讲解)

进入数据库的数据目录 cd var/lib/mysql 库的操作 创建数据库 创建数据库的本质是创建目录。 创建数据库时有两个编码集:1.数据库编码集(存储时使用)2.进行字段比对读取时使用的编码方式) 语法: CREATE DATABASE …

7、Redis复制(replica)

Redis复制(replica) 是什么? 就是主从复制,master以写为主,Slave以读为主。当master数据变化的时候,自动将新的数据异步同步到其它slave数据库 读写分离 容灾恢复 数据备份 水平扩容支撑高并发 案例演示 架构说明 一个Master两个…

微服务系列文章之 seata 事务模式

XA模式 XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准。 XA 规范 描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范 提供了支持。 两阶段提交 XA是规范&…

深度学习优化算法

梯度下降算法 随机梯度下降。随机梯度下降是指每次迭代在训练数据中随机抽取一个数据计算梯度来更新模型得参数。随机梯度下降容易受到噪声干扰,训练时间长,代价函数最终会围绕全局最小值或者局部极小值震荡。批量梯度下降。每次迭代时使用所有的训练数据来计算梯度更新模型的…

UE5 录制透明png序列帧

以下是在 Unreal Engine 5 中录制透明 PNG 序列帧的详细步骤: 步骤1:创建一个场景 步骤2:打开序列录制器 在 Unreal Engine 5 中,首先需要打开序列录制器。你可以通过点击顶部菜单栏的 窗口 > 开发人员工具 > 序列录制器 …

WEB漏洞-XXEXML之利用检测绕过全解(39)

#概念 xml:xml被设计成传输和储存数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容。就类似于一种数据的格式,代码类的一些东西; xxe:是xml上面的一个漏洞,…

mesh网格数据解析及cesium绘制格网三角网可视化实现

代码实现运行效果 技术术语 Mesh通常指网络拓扑中的网状结构。在计算机网络中,Mesh是指每个节点都与其他节点相连,形成一个无中心的网状结构。Mesh网络常见于分布式计算、传感器网络、互联网等场景中。另外,在3D计算机图形学中,M…

MATLAB 之 Simulink 系统仿真实例和 S 函数的设计与应用

这里写目录标题 一、Simulink 系统仿真实例1. 方法一2. 方法二3. 方法三 二、S 函数的设计与应用1. 用 MATLAB 语言编写 S 函数1.1 主程序1.2 子程序 2. S 函数的应用 一、Simulink 系统仿真实例 下面的应用实例我们将分别采用不同建模方法为系统建模并仿真。例如,…

【AUTOSAR】BMS开发实际项目讲解(三十一)----电池管理系统电池热管理功能

电池热管理功能 关联的系统需求 Sys_Req_4101、Sys_Req_4102、Sys_Req_4103、Sys_Req_4104、Sys_Req_4105; 功能实现描述 为保证电池系统的热安全,以及电池系统不同温度环境下的工作性能,本车型具备热管理功能。 表-热管理功能配置 功能 功能描述 …

vim多文件切换快捷键设置

1、基本切换指令 vim中在打开多个文件时,会有多个文件进行切换的需求。按:bn切换到下一个文件,按:bp切换到上一个文件。 2、快捷键设置 为了便捷操作,将切换命令设置成快捷键。 进入/home/yys个人目录下,vim .vimrc进入vimrc文…

java新特性stream

stream Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。 Stream将要处理的元素集合看作一种流,在流的过程中,借助…

Linux性能瓶颈分析之TOP指标分析

Linux性能瓶颈分析之TOP指标分析 文章目录 Linux性能瓶颈分析之TOP指标分析一、查看CPU二、监控CPU总结 一、查看CPU 1.查看cpu基础信息 lscpu2.查看cpu详细信息 cat /proc/cpuinfo3.统计cpu信息 cat /proc/cpuinfo |grep "physical id" |sort |uniq |wc -l 查看…