函数的参数
一、默认参数:默认参数是指带有默认值的参数,在对该函数进行调用时,可以不必显示传递给该函数。当不传递值的时候,函数将使用默认值。默认参数后面必须也是默认参数。
注意:默认值只能会执行一次这条规则,在默认值为可变对象(列表,字典等)时非常重要。官方建议默认参数尽量使用不可变对象,因为可变对象会存储在后续调用中传递给它的参数。如:
1 2 3 | def abc(a,b = []): b.append(a) print (b) |
连续调用三次的结果是:
abc(100) 结果:[100]
abc(200) 结果:[100,200]
abc(300) 结果:[100,200,300]
可以改以下方式:
1 2 3 4 5 | def abc(a,b = None ): if b is None : b = [] b.append(a) print (b) |
连续调用三次的结果是:
abc(100) 结果:[100]
abc(200) 结果:[200]
abc(300) 结果:[300]、
二、关键字参数:函数调用时指定参数名称,称关键字参数。调用时关键字函数必须在普通参数后面。如:
def abc(x,a=100,b=200)
调用时:
abc(10,a=300,b=400)
注意:两者的区别是:默认参数是在函数创建时,关键字函数是在函数调用时。
三、限定关键字形参(命名关键字参数):必须使用关键字方式传递参数,目的就是为了限制后面几个参数只能按关键字传递,这往往是因为后面几个形参名具有十分明显的含义,显式写出有利于可读性;或者后面几个形参随着版本更迭很可能发生变化,强制关键字形式有利于保证跨版本兼容性。
1 2 | def abc(a, * ,b,c): print (a,b,c) |
这里的*号是占位符,表示*号后面的参数必须是关键字参数,调用如下:
abc(100,b=200,c=300)
四、可变参数:当参数的数量不固定或比较灵活时可以用可变参数。以*+参数名的形式,一般都用*args,会返回一个tuple对象;以**+参数的形式,一般都用**kwargs,会返回一个dict对象:
1 2 3 | def abc(a,b, * args): print (a,b,args) abc( 100 , 200 , 300 , 400 , 500 , 600 ) |
返回结果:
100 200 (300, 400, 500, 600)
1 2 3 | def abc(a,b, * * kwargs): print (a,b,kwargs) abc( 100 , 200 ,x = 100 ,y = 200 ,z = 300 ) |
返回结果:
100 200 {'x': 100, 'y': 200, 'z': 300}
五、参数的解包:如果参数的数据类型是:字符串,列表,元组,字典,集合的时候,可以解包传递实参时,可以在实参前添加*号,这样会自将序列中的元素依次作为参数传递。需要注意的是,实参解包后对应的元素数量必须和形参数量一致,不然程序会报错。
1、字符串、列表、元组、集合解包:
1 2 3 4 5 6 7 8 9 10 | def abc(a,b,c): print (a,b,c) s = '123' l = [ 1 , 2 , 3 ] t = ( 1 , 2 , 3 ) s1 = { 1 , 2 , 3 } abc( * s) abc( * l) abc( * t) abc( * s1) |
返回结果都是:
1 2 3
2、字典解包:
1 2 3 4 5 6 7 8 | def abc(a,b,c): print (a,b,c) d = { '名字' : 'Donfag' , '年龄' : 20 , '工作' : 'Python' } abc( * d) |
返回结果:
名字 年龄 工作
注意:这里获取到的值是字典的KEY,如果要获取字典的VALUE,可以用两个星号(**),但这里需要注意的是,用两个*号时,字典的键名和函数的形参名必须要一致(顺序和命名):
1 2 3 4 5 6 7 8 | def abc(a,b,c): print (a,b,c) d = { 'a' : 'Donfag' , 'b' : 20 , 'c' : 'Python' } abc( * * d) |
返回结果:
a b c
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具