可以將條件本身存儲在變量中,而不是立即返回它,何時聲明它?可以保存爲一個可變的條件嗎?
例子:
a = 3
b = 5
x = (a == b)
print(x)
a = 5
print(x)
回報是
False
False
不過,我有望獲得
False
True
我只是隨便與Python的魔法樂趣。我知道這是可能的使用函數,但我想知道是否有可能使用一個變量。
可以將條件本身存儲在變量中,而不是立即返回它,何時聲明它?可以保存爲一個可變的條件嗎?
例子:
a = 3
b = 5
x = (a == b)
print(x)
a = 5
print(x)
回報是
False
False
不過,我有望獲得
False
True
我只是隨便與Python的魔法樂趣。我知道這是可能的使用函數,但我想知道是否有可能使用一個變量。
後,必須添加print(x)
該條件始終立即進行評估。如果你要評估它的需求,你可以把一個函數或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)
這只是用於教育目的,但不要在生產中使用它。還要注意它在打印語句中工作 - 要使它在if
語句等中工作,您還必須覆蓋__bool__
(python 3)或__nonzero__
(python 2)。
不需要你需要一個函數。
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))
使它成爲一個簡單的函數:
def f(a,b):
x= (a==b)
print x
f(3,5)
f(5,5)
此外,如果你問,如果你可以存儲在變量的情況下,你已經做了。這就是爲什麼X根據函數的輸出保持真值或假值的原因。如果您只想使用變量而不是函數,那麼在每次更新變量
您可以通過使用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
如果你只是想在魔術當您打印X發生,覆蓋__str__
。
>>> class X(object):
... def __str__(self):
... return str(a == b)
...
>>> x = X()
>>> print(x)
False
>>> a = 5
>>> print(x)
True
您可以使用lambda函數:'X =拉姆達A,B:A == B',然後'X(3,5)' –
你沒有得到你所期望的結果的原因是因爲條件存儲在變量「x」中的數據不會使用存儲在「a」中的新值進行更新。 –