use*_*339 0 python operator-overloading
这类似于方法重载。当print Hello(1, 2, 3)执行时它会返回"a and b",而我希望它返回"a and b and c"。我知道我可以说if (a and b and c is None)这样就会有效。但是,如果我有 20 个参数并且我必须处理每种情况,那么这将只是多个if我认为没有必要的语句。我应该有更好的方法来解决这样的问题吗?
def Hello(a=None, b=None, c=None):
if(a and b):
return "a and b"
if(a and c):
return "a and c"
if(a and b and c):
return "a and b and c"
print Hello(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
您需要重新排序if语句:
def Hello(a=None, b=None, c=None):
if a and b and c:
return "a and b and c"
if a and b:
return "a and b"
if a and c:
return "a and c"
Run Code Online (Sandbox Code Playgroud)
当a and b and c评估为 true 时,a and b也评估为 true,因此在您的代码中,这种情况由第一个 处理if。