可以将条件本身存储在变量中,而不是立即返回它,何时声明它?
示例:
a = 3
b = 5
x = (a == b)
print(x)
a = 5
print(x)
返回
False
False
但是,我希望得到
False
True
我只是玩Python的魔力。我知道可以使用函数,但我想知道是否可以使用变量。
答案 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)