Python函数调用时如何跳过指定参数直接为目标参数传值
跳过前置位置参数传值的实现方法
Python没有语法层面的空占位跳过前置参数的写法,想要跳过参数a、把指定值直接绑定给参数b,核心依靠关键字传参的规则绕开位置匹配逻辑。
具体实现写法
保持你定义的函数结构不变时,调用函数必须显式标注要传值的参数名,写法为:function(a=传入给a的合法值, b=5)
这种传参方式不要求和函数定义的参数顺序一致,Python会根据你标注的形参名,把实参值和对应形参一一绑定,不会按位置顺序错位匹配。
注意事项
- 按照最初的无标注写法
function(5)调用时,Python会严格从左到右按位置把第一个实参绑定到形参a上,同时因为缺少形参b的传值,会直接抛出TypeError: function() missing 1 required positional argument: 'b'的运行错误。 - 不存在
function(, 5)这类空逗号占位跳参数的写法,不符合Python语法规则,只要想给非第一位的参数传值,就必须显式标注参数名。 - 原函数中形参a是没有默认值的必传参数,哪怕只需要给b传值,也必须给a传入一个合法值,不能完全跳过a不传;如果想让a变成可省略的参数,可以在函数定义时给a设置默认值,比如改成
def function(a=None, b): pass,但即便做了这个修改,调用function(5)时还是会触发位置匹配规则,把5绑定到a上,不会自动赋值给b。
可运行验证代码
def function(a, b): print(f"参数a的绑定值: {a}") print(f"参数b的绑定值: {b}") # 符合需求的调用:不按位置顺序,直接把5绑定给b function(a="a的占位传值", b=5) # 运行输出结果: # 参数a的绑定值: a的占位传值 # 参数b的绑定值: 5
内容的提问来源于stack exchange,提问作者The Noob Programmer
相关产品推荐
相关产品推荐

