繁体   English   中英

Python:递归函数和存储变量

[英]Python: Recursive function and storing variable

我有一个递归函数,simulation(),它每隔一分钟左右从网络上获取一些值(这些值是对多个动作进行计数的结果)。 函数内部是一个嵌套函数 raise_alarm,也是递归的,它使用来自 Simulation() 的值作为参数并分析它们。 我需要能够检测每次运行后值是否发生了变化。

我一直在阅读时避免使用全局变量(对它们不太了解),它们应该是最后的手段。 那么有什么方法可以在嵌套函数内部或外部存储一个值,以便能够在它到达后将其与其更新状态进行比较?

这是简化的代码:

    def simulation():
        #generates the values_a, _b...
       def raise_alarm(value_a, value_b,...):
           if value_a_old < value_a:    ###where do I place value_a_old?)
               #do stuff  
           else: pass          
           if value_b_alt < value_b:
               #do stuff
           else: pass            
           if value_a > value_b+2 or value_b > value_a+2:
               #do stuff
           else:
               #do other stuff
        while True:
            print' stuff '
            time.sleep(2)
            raise_alarm(value_a, value_b)
    simulation()

因此,详细地说,value_a,_b... 正在不断地从网络上删除。 每次 value_b 平均增长 3 倍时,value_b 也会增长 1。我需要在 raise_alarm 函数中使用一个变量来反映 value_a,但每次 value_b 更改时都会被设置回 0。 为此,我想将 value_a 存储在存储变量 value_a_old 中,以便我可以将新传入的 value_a 与 value_a_old 进行比较。 value_a 和 value_a_old 都需要在课程中更新。

希望,你知道我在说什么,我一直盯着它看一整天......

干杯,伙计们!

也许将 Simulation() 和 raise_alarm() 都打包在一个类中并使用对象参数? 这将为您想要共享的值提供一个很好的共享范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM