2015-11-21 88 views
0

我写了一个函数,它会生成截图并检查它是否与旧的不同。示例代码如下。但是,我想知道pythons最佳实践来设置变量oldimage和图像。特别是在main()可以在第一次启动之前需要设置oldimage。我使用全局变量吗?在循环中初始化变量 - 使用全局变量?

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

while True: 
    main() 
+5

为什么不把''while'循环*放在函数*中? –

回答

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() 
+1

为什么有'如果不是......通过'?用'如果等于...'替换'else'代码会更短。 – skrrgwasme

+1

另外,为什么有'oldimage = image'?如果'oldimage'和'image'相等,那么这段代码就会执行,所以重新分配并没有做任何事情。这是否应该在代码执行时,他们是*不*相等? – skrrgwasme

+0

不知道我的答案提交发生了什么。我已经拿出了不必要的“通行证”部分,或者至少我认为我有。现在它已被纠正。感谢您的支持。 – pgreen2