'有比布尔值更好的方法可以作为函数参数吗?'

2024-03-28 23:13:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我的职能是:

def names(N=None, p=None, gender=None, start=None, End=None, Interval=None):

这个函数的作用是接受参数并提供输出。但是如果NNone,但是p是给定的,所有其他参数都是Non,或者如果NP是给定的,所有其他参数都没有给定,这样的映射继续下去,也就是说,如果一个参数是给定的,而另一个参数不是给定的,那么输出应该是不同的。目前我正在使用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. 

Tags: nonetrue参数ifnamesisdefargument
2条回答

我建议让names方法接受带有Npgender等属性的对象,或者带有这些键的字典。然后可以测试是否设置了对象的属性或字典的键。你知道吗

objectgetattr()方法或dictionary.get()方法甚至允许您设置默认值,或者您可以在object的__init__()方法中设置默认值。你知道吗

您可以考虑将函数拆分为几个接受较少参数的函数(以“高内聚和松耦合”为目标,作为拆分参数的指南)。你知道吗

如果将所有参数转换为bool,则可以利用True == 1False == 0例如:

result = [['false N, false p', 'false N, true p'], 
          ['true N, false p', 'true N, true p']][N][p]

您可以使用矩阵来选择要调用的函数,而不是选择字符串。你知道吗

相关问题 更多 >