可以保存为变量一个条件吗?

时间:2015-04-22 14:27:36

标签: python variables

可以将条件本身存储在变量中,而不是立即返回它,何时声明它?

示例:

a = 3
b = 5

x = (a == b)
print(x)

a = 5
print(x)

返回

False
False

但是,我希望得到

False
True

我只是玩Python的魔力。我知道可以使用函数,但我想知道是否可以使用变量。

6 个答案:

答案 0 :(得分:2)

您可以使用property

获得此类反应模式
class Test:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    @property
    def x(self):
        return self.a == self.b

然后:

>>> t = Test(a=3, b=5)
>>> t.x
False
>>> t.a = 5
>>> t.x
True

答案 1 :(得分:1)

当然,这被称为功能! :)

def x(a, b):
    return a == b

答案 2 :(得分:1)

没有。你需要一个功能。

def test(param_1, param_2):
    return param_1 == param_2

a = 3
b = 5
print(test(a, b))
a = 3
print(test(a, b))

答案 3 :(得分:1)

始终立即评估条件。如果要按需评估它,可以将其设为函数或lambda表达式:

x = lambda: a == b
print(x())

另外,你可能会做一些黑魔法并制作一个课程来评估打印时的状况:

class Condition:
  def __init__ (self, cond):
    self.cond = cond
  def __str__ (self):
    return str(self.cond())

x = Condition(lambda: a == b)
print(x)

这仅用于教育目的,但不能在生产中使用它。还要注意它onl在print语句中工作 - 为了使它在if语句等中工作,你还必须覆盖__bool__(python 3)或__nonzero__(python 2)。

答案 4 :(得分:1)

如果您只想在打印x时发生魔术,请覆盖__str__

>>> class X(object):
...     def __str__(self):
...         return str(a == b)
...
>>> x = X()
>>> print(x)
False
>>> a = 5
>>> print(x)
True

答案 5 :(得分:0)

使它成为一个简单的功能:

def f(a,b):
    x= (a==b)
    print x
f(3,5)
f(5,5)

另外,如果您询问是否可以将条件存储在变量中,那么您已经这样做了。这就是为什么X根据函数的输出保持值为true或false的原因。如果你想只使用一个变量而不是一个函数,你必须在每次更新任何一个变量后添加print(x)