gpt4 book ai didi

python - 实际函数参数的数量

转载 作者:太空狗 更新时间:2023-10-29 22:13:28 24 4
gpt4 key购买 nike

有没有办法获取传递给函数的实参个数

def foo(a, optional=42):
if ????
print "1 arg"
else:
print "2 args"

foo(11) # should print 1 arg
foo(22, 42) # should print 2 args

不更改其签名以接受 *args

最佳答案

您可以将默认值更改为哨兵:

_sentinel = object()

def foo(a, optional=_sentinel):
if optional is _sentinel:
optional = 42
print "1 arg"
else:
print "2 args"

或者直接在 func_defaults 元组中访问它:

def foo(a, optional=object()):
if optional is foo.func_defaults[0]:
optional = 42
print "1 arg"
else:
print "2 args"

但实际上不要使用它;这只会让那些不熟悉标准函数对象属性的人感到困惑。

是的,_sentinel 对象是可自省(introspection)的,仍然可以由坚定的开发人员获得,但同样的开发人员也可以对您的函数进行 monkeypatch。 :-)

关于python - 实际函数参数的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589982/

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