我的功能是:
def names(N=None, p=None, gender=None, start=None, End=None, Interval=None):
这个函数确实采用了什么参数并显然提供了输出。但是,如果N
为None
,但我会给出p
,而所有其他参数都是Non
,或者N
和P
是否已给出以及所有其他参数没有给出参数,并且这样的映射继续,即如果给出一个参数而没有给出其他参数,则输出应该变化。目前我正在使用if语句和布尔值来检查它。但由于有太多的争论,它是一个非常长的概率。因此有更简单的方法吗?
目前我正在尝试:
#assuming N argument is not given but p argument is given
if ((bool(N)==False) and (bool(p)==True))==True:
#then the operation is carried out.
答案 0 :(得分:0)
我建议让names
方法接受带有N
,p
,gender
等属性的对象,或者带有这些键的字典。然后,您可以测试是否设置了对象的属性或字典的键。
对象getattr()
方法或字典.get()
方法甚至可以让您设置默认值,或者您可以在对象的__init__()
方法中设置默认值。
答案 1 :(得分:0)
您可以考虑将函数拆分为几个接受较少数量参数的函数(目标是"高内聚和松散耦合"作为分割参数的指南)。
如果您将所有参数转换为bool,那么您可以利用True == 1
和False == 0
例如:
result = [['false N, false p', 'false N, true p'],
['true N, false p', 'true N, true p']][N][p]
您可以使用矩阵选择要调用的函数,而不是选择字符串。