Python(青铜时代)——函数的进阶与递归
创始人
2025-05-29 21:28:19
0

函数的返回值

返回值

  • 在程序开发中,有时候,会希望一个函数执行结束后,告诉调用者一个结果,以便调用者针对结果作后续的处理

  • 返回值 是函数 完成工作后,最后给调用者的一个结果

  • 在函数中使用 return 关键字可以返回结果

  • 调用者 可以使用变量 来接收函数的返回结果

返回值示例

# 单返回值示例
def test1():name="zs"return namen=test1()
print("名字是:%s" %n)# 多返回值,返回元组
def test2():name="zs"age=12return name,agen,a=test2()
print("名字是:%s,年龄是:%d" %(n,a))#第二种返回值接收形式
result=test2()
print(result)
print("名字是:%s,年龄是:%d" %(result[0],result[1]))# 多返回值,返回元组2,与上一个函数返回的结果是一样的
def test3():name="zs"age=12return (name,age)
n,a=test3()
print("名字是:%s,年龄是:%d" %(n,a))
 

输出结果

交换变量的值

a=100
b=10# 形式一
b,a=a,b
print(b,a)# 形式二,注: 其实两种方式是一样的,只是看起来一个加了括号一个没加,但其实后面都是用的元组
b,a=(a,b)
print(b,a)
 

函数的参数

不可变与可变参数

  • 在函数内部,针对参数使用 赋值语句,不会影响调用函数时传递的 实参变量

  • 不管是可变还是不可变类型的参数,针对参数使用 赋值语句,会在函数内部修改局部变量的引用,不会影响 外部变量的引用

  • 当参数是 可变类型时,在函数内部,使用 方法 修改了数据的内容,会影响到外部的数据

示例

# 可变与不可变类型参数,使用赋值语句 不会影响外部调用时的 变量
def test1(num,num_list):num=10num_list=[4,5,6]print("函数内部num值:%d" %num)print("函数内部num_list值:",num_list)gl_num=3
gl_num_list=[1,2,3]
test1(gl_num,gl_num_list)
print("函数外部num值:%d" %gl_num)
print("函数外部num_list值:",gl_num_list)# 可变类型的参数,使用 方法赋值,会影响外部调用时的 变量
def test2(num_list):# 形式一num_list.append(9)# 形式二num_list.extend([2,2,2])# 形式三(默认使用的也是 extend)num_list+=[3,3,3]print("函数内部调用后的值是:",num_list)gl_num_list2=[1,1,1]
test2(gl_num_list2)
print("函数外部调用后的值是:",gl_num_list2)
 

输出结果

缺省参数

  • 定义函数时,可以给 某个参数 指定一个默认值,具有默认值的参数就叫 缺省参数

  • 调用函数时,如果没有传入缺省参数的值,则在函数内部会使用 参数的默认值

  • 函数的缺省参数,将常见的值设置为参数的缺省值,从而 简化函数的调用

  • 缺省参数的定义位置,应该放在参数列表的末尾

  • 如果有 多个缺省参数,调用时需要指定参数名,这样解释器才能知道参数的对应关系

def test1(name,work="工程师",gender="男"):print("名字是:%s,职位是:%s,性别是:%s" %(name,work,gender))test1("张三",gender="女")
test1("李四",work="设计师")
test1("王五",work="设计师",gender="人妖")
 

输出结果

多值参数

  • 参数名前增加一个 * 可以接收 元组

  • 参数名前增加 两个 * 可以接收 字典

  • 一般在给多值参数命名时,习惯使用以下两个名字

    • *args  存放 元组 参数,前面有一个 *

    • **kwargs  存放 字典 参数,前面有两个 *

  • args 是 arguments 的缩写,有变量的含义

  • kw 是 keyword 的缩写,kwargs 可以记忆 键值对参数

示例

# 测试普通参数,元组,字典传参
def test(num,*args,**kwargs):print(num)print(args)print(kwargs)test(1,2,3,4,5,nmae="zs",age="12")

输出结果

元组和字典的拆包

  • 在调用带有多值参数的函数时,如果希望:

    • 将一个 元组变量,直接传递给 args

    • 将一个 字典变量,直接传递给 kwargs

  • 就可以使用 拆包,简化参数的传递,拆包的方式是

    • 在 元组变量前,增加一个 *

    • 在 字典变量前,增加两个 *

示例

def test(*args,**kwargs):print(args)print(kwargs)# 不使用拆包
test(1,2,3,name="zs",age=12)# 使用拆包
t_tuple=(1,2,3)
d_dict={"name":"zs","age":12}
test(*t_tuple,**d_dict)

输出结果

递归

  • 一个函数,内部自己调用自己

  • 当 参数满足一个条件时,函数不再执行,这个非常重要,通常被称为 递归的出口,否则 就会出现 死循环

示例

# 使用递归 计算累加  1+2+3....num
def sum_num(num):# 定义出口if num==1:return 1tmp=sum_num(num-1)return num+tmptotal=sum_num(10)
print("累加的值是:",total)

输出结果

程序猿与投资生活实录已改名为  程序猿知秋,WX同款,欢迎关注!   

相关内容

热门资讯

.NET core3.1大型医...   ▷ 本套云LIS平台源码,基于B/S架构的医学实验室管理系统,整个系...
接受教育一阵子,自我教育一辈子... 【周克平专栏】接受教育一阵子,自我教育一辈子文|周克平(国家开放大学南昌学院副教授,校长传媒专栏作者...
八种让孩子愉快的家庭教育方式 ... 教育孩子,往往令到很多父母感到头疼。其实,家庭教育,可以是愉快的。下面介绍给您八种愉快的家庭教育方式...
对话高考状元,献上他们共同的家... 通过采访全国68个高考状元,我们发现优秀的家庭教育方式总是有惊人的类似之处,跟旭航教育一起来看看优秀...
真相:学霸的家庭教育方式,惊人... 相信这几年有不少同学被“别人家的孩子”所折磨着,我们的父母总是夸奖别人家的孩子怎么怎么好,却不知道自...
血细胞智能检测与计数软件(Py... 摘要:血细胞智能检测与计数软件应用深度学习技术智能检测血细胞图像中红细胞、镰状细胞等不...
PropertyPlaceho... 一、PropertyPlaceholderConfigurer 的继承体系 ​ PropertyPl...
“父母修养”之七:《争取“成功... 据报道,每年高考过后,考生家长离婚率猛增。据统计,2009年、2010年和2011年,每年高考结束后...
教书的是老师,但育人的一定是父... 俞敏洪《教书的是老师,但育人的一定是父母》的文章在网络上广为传播,转载的公众号无数。此论不细看,貌似...
盼孩子成绩好不如盼孩子性格好 ... 许多父母以为,家庭教育的核心就是让孩子学习好,因而掠夺式的开发孩子的智力,两三岁背唐诗,四五岁学英语...
柳州最新学区划分,最新或202... 柳州公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍柳州小...
桂林最新学区划分,最新或202... 桂林公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍桂林小...
面试热点题:回溯算法 电话号码... 前言: 如果你一点也不了解什么叫做回溯算法,那么推荐你看看这一篇回溯入门...
JetsonNano搭载的扩展... 在DIY机器人时,我们可以使用远程连接到机器人查看相关信息,也就是前面提...
贺州最新学区划分,最新或202... 最新或2023(历届)1月26日,教育部办公厅下发了《关于做好最新或2023(历届)城市义务教育招生...
百色最新学区划分,最新或202... 从百色右江区教育局了解到,百色右江区小学划片政策已经公布。太阳教育网为大家准备了最新或2023(历届...
渗透学习-CTF篇-web-C... 文章目录前言web入门部分反序列化web254web255web256web257web258 前...
梧州最新学区划分,最新或202... 今年,梧州市万秀区进行了秋季学期小学招生改革,首次采用“学区制”的形式进行招生。近日,有家长提出自己...
贵港最新学区划分,最新或202... 入学对象和安排顺序入学对象基本要求1.小学新生入学对象是城区户籍(包括符合进城务工人员随迁子女条件的...
玉林最新学区划分,最新或202... 江南区古定中心小学,是一所全日制公办小学,始建于1907年,该校于2002年获得了“中国名校”称号。...