想象一下,我想定义一个具有默认值的所有参数的函数:
def fun(a=2, b=1):
...
函数内部的逻辑是:如果没有传递,则使用默认值;如果只传递a,那么b总是等于a / 2;如果a和b都通过,则使用传递的值。
完成此功能的问题在于,似乎很难区分(例如) fun(4)和 fun(4,1)之间的区别,因为我不知道 b = 1 是在外面提供还是仅为默认值。
一种显而易见的方法是使用* args,但是,在我的情况下,我想保留默认值和名称。因此,似乎唯一的出路是知道内部 fun()在调用时传递了多少个参数。我想可能有一些系统功能可供使用,但我没有成功找到它们。不知道这项工作怎么可能会有所帮助。
谢谢! :)
答案 0 :(得分:2)
您可以(例如)将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