如何检查变量的值是否已更改

drl*_*led 5 python variables

如果我有一个变量:

var = 5
Run Code Online (Sandbox Code Playgroud)

我想在变量的值更改时检测并跳转到函数,所以如果var不等于之前的值,我想跳转到函数。

最简单的方法是什么?

另一个例子:

from datetime import datetime
import time


def dereferentie():
    currentMinute = datetime.now().minute
    checkMinute(currentMinute)

def checkMinute(currentMinute):

    #if currentMinute has changed do:
        printSomething()

def printSomething():
    print "Minute is updated"


def main():
    while (1):
        dereferentie()


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

tro*_*xis 5

以@HelloWorld 的回答和@drIed 的评论为基础:一个不错的方法是将其包装到一个类中。

例如:

class Watcher:
    """ A simple class, set to watch its variable. """
    def __init__(self, value):
        self.variable = value
    
    def set_value(self, new_value):
        if self.variable != new_value:
            self.pre_change()
            self.variable = new_value
            self.post_change()
    
    def pre_change(self):
        pass # do stuff before variable is about to be changed
        
    def post_change(self):
        pass # do stuff right after variable has changed
        
Run Code Online (Sandbox Code Playgroud)


Hel*_*rld 3

我会使用一个 setter 函数来触发您所需的函数。

def setValue(val):
    global globalVal
    valueChanged= g_val != val
    if valueChanged:
        preFunction()
    globalVal = val
    if valueChanged:
        postFunction()
Run Code Online (Sandbox Code Playgroud)