Python 2.7 为什么会运行两次?

Python 2.7 为什么会运行两次?,python-2.7,if-statement,while-loop,background-process,system-tray,Python 2.7,If Statement,While Loop,Background Process,System Tray,我制作了一个使用 即使是你,它也工作得很好,每次它检查一些东西,它都会做两次。我可以通过减少一半的机会来解决这个问题,但这是一条捷径,不是一个合适的解决办法 from systray import SysTrayIcon from random import randint def shutprogram(SysTrayIcon): something = getsomething() while True: if getsomething() != some

我制作了一个使用

即使是你,它也工作得很好,每次它检查一些东西,它都会做两次。我可以通过减少一半的机会来解决这个问题,但这是一条捷径,不是一个合适的解决办法

from systray import SysTrayIcon
from random import randint


def shutprogram(SysTrayIcon):
    something = getsomething()
    while True:
        if getsomething() != something :
            something = getsomething()
            if randint(0,100) <= 10:
                print "STOP, HAMMER TIME!"
                stopthis()
            else:
                print "You may pass"

menu = (('Start', icon.next(), shutprogram),)

SysTrayIcon(icon.next(),"Shut Program",menu)
从systray导入SysTrayIcon
从随机导入randint
def关闭程序(SysTrayIcon):
something=getsomething()
尽管如此:
如果得到某物()!=一些东西:
something=getsomething()

如果randint(0100)哦,我得到了。当我尝试“getsomething”时,它必须等待一点,因为它有一些延迟,提示返回一个类似“wait,getting info”的字符串。

每次你说
getsomething()
,就会调用
getsomething
函数。也许您想使用一个临时变量来避免这种情况。但是getsomething()是不应该干扰if-station的其他函数。您正在if语句中调用它(
if getsomething()!=something:
)。然后,如果结果为真,您可以再次调用它:
something=getsomething()
。我想我把它说错了。我不担心调用getsomething()两次,因为它只给我一个str/int/whatever,我不希望while循环运行两次并检查'if randint(0100)Well。。整个过程都在一个
中,而True:
,所以它将永远循环,对吗?