在循环中初始化变量 - 使用全局变量?

时间:2015-11-21 22:22:59

标签: python global

我编写了一个功能,可以制作屏幕截图并检查它是否与旧屏幕截图不同。示例代码如下。但是,我想知道pythons最佳实践来设置变量oldimage和image。特别是oldimage需要在main()第一次启动之前设置。我是否使用全局变量?

def main():
    image=screenGrab()
    if equal(image,oldimage):
        pass
    else:
        dosomething()
        oldimage=image

while True:
    main()

1 个答案:

答案 0 :(得分:0)

使用全局变量几乎不是正确的解决方案。它通常最终导致比解决方案更多的问题。从@MartijnPieters继续,我将按如下方式组织您的代码:

def main():
    oldimage = loadLastImage()

    while True:
        image=screenGrab()
        if not equal(image,oldimage):
            dosomething()
            saveLastImage(image) # this is the opposite of loadLastImage()
            oldimage=image

# this is the more accepted way of running main 
# because it still allows your code to be loaded as module
if __name__ == "__main__":
    main()