Python-查找函数中传递的参数数
假设我想定义一个函数,其中所有参数都有默认值:Python-查找函数中传递的参数数,python,Python,假设我想定义一个函数,其中所有参数都有默认值: def fun(a=2, b=1): ... 函数内部的逻辑是:如果没有传递任何内容,则使用默认值;如果只有a通过,则b始终等于a/2;如果a和b都被传递,则使用传递的值 完成此函数的问题在于,似乎很难区分(例如)fun(4)和fun(4,1)之间的区别,因为我不知道b=1是在外部提供的还是只是默认值 一个明显的解决方法是使用*args,然而,在我的例子中,我希望保留默认值和名称。因此,唯一的解决办法似乎是了解调用时在fun()内部传递了
def fun(a=2, b=1):
...
函数内部的逻辑是:如果没有传递任何内容,则使用默认值;如果只有a通过,则b始终等于a/2;如果a和b都被传递,则使用传递的值
完成此函数的问题在于,似乎很难区分(例如)fun(4)和fun(4,1)之间的区别,因为我不知道b=1是在外部提供的还是只是默认值
一个明显的解决方法是使用*args,然而,在我的例子中,我希望保留默认值和名称。因此,唯一的解决办法似乎是了解调用时在fun()内部传递了多少个参数。我想可能有一些系统功能可以使用,但我没有成功地找到它们。任何关于这项工作的想法都会很有帮助
谢谢!:) 您可以(例如)使用默认值b
beNone
,然后在函数内部计算出b
应取的值
def fun(a=2, b=None):
if b is None:
b = a/2
...
这将为您提供:
f() : a=2, b=1
f(4) : a=4, b=2
f(4,1) : a=4, b=1
您可以(例如)将默认值b
设为None
,然后在函数内部计算出b
应取的值
def fun(a=2, b=None):
if b is None:
b = a/2
...
这将为您提供:
f() : a=2, b=1
f(4) : a=4, b=2
f(4,1) : a=4, b=1
因此,不要使用默认参数
b=1
。让(例如)b=None
,然后在函数内部根据情况计算出b
应该取什么值。因此不要使用默认参数b=1
。让(例如)b=None
,然后在函数内部根据情况计算出b
应该取什么值。谢谢@khelwood!这是一个非常清晰和好的解决方案。出于好奇,您认为在Python中可以知道函数中传递的参数数量吗?您可以在参数进入函数之前使用某种装饰器来捕获参数,但我认为这基本上还是一种*args,**kwargs
解决方案。我明白了。谢谢你的帮助!谢谢@khelwood!这是一个非常清晰和好的解决方案。出于好奇,您认为在Python中可以知道函数中传递的参数数量吗?您可以在参数进入函数之前使用某种装饰器来捕获参数,但我认为这基本上还是一种*args,**kwargs
解决方案。我明白了。谢谢你的帮助!