gpt4 book ai didi

python - 在 Python 中检测 kwarg 覆盖

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:48 24 4
gpt4 key购买 nike

我正在寻找一种方法来检测关键字 arg 是否被显式传递,而不使用 **kwargs

这是一个例子:

def foo(first, second=None):
pass

如果在这个函数中,我发现 second 包含 None,有没有办法知道 None 是否来自默认值,还是被显式传入?基本上,我有一个可选参数,它可以是任何值或类型。因此,我要么需要某种“独特”的默认值,这样用户就不会故意传递该默认值,要么我需要一种方法来检测参数是否实际上是显式传递的。

我希望我可以通过检查堆栈来发现它,但我觉得这太过分了。

我也知道我可以这样做:

def foo(first, **kwargs):
if 'second' in kwargs:
# Overridden!
pass

但我宁愿不接受 **kwargs,因为它使我的函数签名变得不那么有用并且可以隐藏错误。

最佳答案

您始终可以创建一个独特的对象并将其用作默认对象:

_default = object()

def foo(first, second=_default):
if second is not _default:
# Overridden!
pass

关于python - 在 Python 中检测 kwarg 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com