在任何条件下返回true的值?

时间:2018-03-21 17:44:30

标签: python variables

我有一个循环遍历大型数据集的函数。它需要多个输入并包含许多条件。对于测试,我有时喜欢在没有特定条件的情况下运行该函数,但是取消注释条件是耗时的 - 这就是我所知道的。

是否可以为函数提供始终使条件为真的输入 - 对于字符串和数值都是如此?

简化示例:

def function(a,b,c....):

    .....

    item = dict(zip(header,row))
    for row in list:
        if item["variable"] == a:
            print row

    ....

    return something

现在我要打印任何一行。

function(any,b,c...)

我考虑过将item["variable"]作为输入,但这不起作用。

6 个答案:

答案 0 :(得分:2)

如果你正在寻找一个对任何参数都返回true的函数:

def always(*args, **kw):
    return True

如果您正在寻找始终将==与任何对象进行比较的对象,则几乎可以执行此操作:

class AlwaysEqual:
    def __eq__(self, other):
        return True

但差不多 - 如果说,如果你把这种不可抗拒的真实性力量对抗一个不可动摇的虚假对象,那么左翼的人将会获胜。

如果你想以对任何合理价值不一致的方式超载多重比较,比如使它与所有东西相等而且比所有东西都要小,那就没有什么可以阻止你了。 (毕竟,math.nan不等于任何东西,包括它自己,以及那些经过深思熟虑的人所写的标准所要求的,所以Python不会阻止你做类似的事情。)

答案 1 :(得分:1)

将代码拆分为“调试模式”和“发布模式”,并使用显式检入条件。远离花哨的方法,因为它将来会带来更多的麻烦。

debug = True


if debug or len(something) > 2:
    # something always on in debug mode
    do_something()

if not debug and len(some_other_thing) > 7:
    # something always off in debug mode
    do_something_else()

答案 2 :(得分:0)

这样的事情可行。

def function(a,b,c,test=False):

    .....

    item = dict(zip(header,row))
    for row in list:
        if test:
            print row
        else:
            if item["vaariable"] == a:
                print row

    ....

    return something

答案 3 :(得分:0)

你可以使用一个带布尔值的函数,如果你正在运行测试则返回True,否则返回布尔值:

def func(x, y, test=False):
    def _bool(b): 
        return True if test else b

    if _bool(foo == x):
        if _bool(bar == y):
            do_something()

答案 4 :(得分:0)

我有时会使用类似的项目检测程序,关闭和打开调试跟踪。在您的情况下,在标志上使用短路or灌注每个条件:

all_true = True
# all_true = False
...

    if all_true or item["vaariable"] == a:
...

这样做一次;您现在可以通过更改注释标记来控制它。也许更有用,您可以在运行期间打开和关闭它。

答案 5 :(得分:0)

从阅读代码开始,我认为你需要一个Python对象,当你使用==将它与任何其他Python对象进行比较时,结果总是True;

首先,您需要定义一个类我提到的属性然后使用它的一个实例而不是any来调用function

class AnyObject(object):
    def __eq__(self, anything):
        return True

1 == AnyObject()
'' == AnyObject()
None == AnyObject()

您的代码:

def function(a,b,c....):

    .....

    item = dict(zip(header,row))
    for row in list:
        if item["variable"] == a:
            print row

    ....

    return something

当您致电AnyObject时,您只需使用any课程的实例代替function

any = AnyObject()
function(any,b,c...)

现在所有行的条件都为真!