2015-11-21 130 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