Python可选参数工作机制:为何func(1,2)返回1 2 10 100?
搞懂Python默认参数的匹配逻辑
嘿,我完全懂你被这个点卡壳的感觉!其实核心就是Python处理函数参数的规则,咱们一步步拆解清楚:
首先看你的函数定义:
def func(a, b, c=10, d=100): print(a, b, c, d)
这里的参数被分成了两类:
- 必填位置参数:
a和b没有设置默认值,所以调用时必须按顺序给它们传值,Python会严格按照传入的顺序把值对应到这两个参数上。 - 可选默认参数:
c和d定义时指定了默认值10和100,如果调用时没给它们传值,Python就会自动用这个默认值来填充。
那你调用func(1,2)的时候,Python是这么匹配参数的:
- 把第一个传入的
1对应到第一个参数a - 把第二个传入的
2对应到第二个参数b - 发现你没给
c传值,就用定义好的默认值10 - 同样,没给
d传值,就用默认值100
所以最后输出就是1 2 10 100啦!
再给你举两个例子巩固理解:
- 如果调用
func(1,2,3),那c就会被你传入的3覆盖,输出是1 2 3 100 - 如果调用
func(1,2,d=200),这时候你用关键字指定了d的值,c还是用默认的10,输出就是1 2 10 200
总结一下:Python处理参数时,先按顺序匹配没有默认值的位置参数,剩下的可选参数如果没传值,就自动用定义时的默认值填充~
内容的提问来源于stack exchange,提问作者BNS
相关产品推荐
相关产品推荐

