【发布时间】:2019-08-20 21:00:36
【问题描述】:
下面是一个简单的 python 代码,它只是打印带有延迟的实际时间/日期。如果有人可以(尽可能简单地)向我解释程序何时以及为什么进入 if 语句(如果 exitFlag :),我将非常感激该语句是什么?如果 exitFLag == 真?对不起,我不明白这一行。
我尝试使用类似且更简单的代码来复制该函数。但是这里程序不会进入 if 语句。我希望有人可以帮助我更好地理解代码。
test = 0
counter = 10
while counter:
if test:
print("if-statement is called")
break
print("still in loop")
counter -=1
import threading
import time
exitFlag = 0
class myThread(threading.Thread):
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self):
print("Starting " + self.name)
print_time(self.name, self.counter, 5)
print("Exiting " + self.name)
def print_time(threadName, counter, delay):
while counter:
if exitFlag:
threadName.exit()
time.sleep(delay)
print("%s: %s" % (threadName, time.ctime(time.time())))
counter -= 1
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("Exiting main thread")
【问题讨论】:
-
Python
while x:statement 是另一个有效的副本,Python evaluates 0 as false 也是如此。 -
...无论哪种方式,这里的代码都不会进入
if exitFlag:或if test:部分,因为这两个部分都不会为测试变量分配真实值。
标签: python-3.x if-statement while-loop