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

如何通过编程判断函数是否使用了默认参数值?

判断Python函数是否使用默认参数的方法

针对你给出的foo函数,直接通过参数值判断是否使用默认值不可靠(比如用户可能主动传入42或100),可以用唯一占位对象的方法来准确区分:

# 定义一个唯一的占位符,用户不可能传入这个对象
_sentinel = object()

def foo(num=_sentinel, bar=_sentinel):
    # 判断num是否使用默认值
    if num is _sentinel:
        num = 42  # 设定原默认值
        print("num使用了默认参数")
    else:
        print("num是用户传入的")
    
    # 判断bar是否使用默认值
    if bar is _sentinel:
        bar = 100  # 设定原默认值
        print("bar使用了默认参数")
    else:
        print("bar是用户传入的")
    
    print("num:", num)

原理说明

  • object()会创建一个唯一的实例,没有其他对象会和它用is判断时相等,所以能精准区分用户是否传入了参数。
  • 如果用户没传num或bar,参数会等于_sentinel,此时我们再把它设为原来的默认值(42/100),同时标记使用了默认参数;如果用户传了值,不管值是什么,都不会等于_sentinel,就判定为用户传入。

测试示例

  • 调用foo():会输出num使用了默认参数、bar使用了默认参数和num: 42
  • 调用foo(42):会输出num是用户传入的、bar使用了默认参数和num: 42
  • 调用foo(bar=200):会输出num使用了默认参数、bar是用户传入的和num: 42

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:02