You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何为函数首参数或中间参数设置默认值?

Python中为函数首/中间参数设置默认值的解决方法

Python的语法规则明确要求:带默认值的参数必须位于无默认值参数的后方。这就是你给第一个参数b设默认值后,跟着无默认值的c、d会触发SyntaxError: non-default argument follows default argument的原因。

下面是两种可行的解决方式:

方案1:为后续无默认值参数也设置默认值

如果允许c、d也拥有默认值,可以直接给它们添加默认值,这样参数顺序不受限制:

class A():
    def __init__(self, b="hey", c="默认c值", d="默认d值"):
        self.b = b
        self.c = c
        self.d = d

调用示例:

  • 全部使用默认值:a = A()
  • 仅修改部分参数:a = A(c="自定义c")
  • 明确指定多个参数:a = A(b="hi", d="自定义d")

方案2:用*强制后续参数使用关键字传递

如果不想给c、d设默认值,又要保留b的默认值,可以在参数列表中加入*,标记*之后的参数必须通过关键字传递:

class A():
    def __init__(self, b="hey", *, c, d):
        self.b = b
        self.c = c
        self.d = d

调用时必须用关键字指定c和d:

  • 使用b的默认值:a = A(c="c的值", d="d的值")
  • 自定义b的值:a = A(b="hi", c="c的值", d="d的值")

如果是给中间参数设默认值(比如b无默认,c有默认,d无默认),同样可以用*实现:

class A():
    def __init__(self, b, *, c="hey", d):
        self.b = b
        self.c = c
        self.d = d

调用示例:

a = A("b的值", d="d的值")  # 使用c的默认值
a = A("b的值", c="自定义c", d="d的值")  # 自定义c的值

内容的提问来源于stack exchange,提问作者swarthy03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:47:18