Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 请解释为什么程序会进入if语句_Python 3.x_If Statement_While Loop - Fatal编程技术网

Python 3.x 请解释为什么程序会进入if语句

Python 3.x 请解释为什么程序会进入if语句,python-3.x,if-statement,while-loop,Python 3.x,If Statement,While Loop,下面是一个简单的python代码,它只打印带有延迟的实际时间/日期。如果有人能向我解释(尽可能简单)程序何时进入if语句(if exitFlag:)以及为什么进入if语句,我将不胜感激?如果exitFLag==真?我不懂这句话 我试图用一个类似和更简单的代码复制这个函数。但是在这里,程序不会进入if语句。我希望有人能帮助我更好地理解代码 test=0 计数器=10 而柜台: 如果测试: 打印(“如果调用语句”) 打破 打印(“仍在循环中”) 计数器-=1 导入线程 导入时间 exitFlag=

下面是一个简单的python代码,它只打印带有延迟的实际时间/日期。如果有人能向我解释(尽可能简单)程序何时进入if语句(if exitFlag:)以及为什么进入if语句,我将不胜感激?如果exitFLag==真?我不懂这句话

我试图用一个类似和更简单的代码复制这个函数。但是在这里,程序不会进入if语句。我希望有人能帮助我更好地理解代码

test=0
计数器=10
而柜台:
如果测试:
打印(“如果调用语句”)
打破
打印(“仍在循环中”)
计数器-=1
导入线程
导入时间
exitFlag=0
类myThread(threading.Thread):
def u u init _;(self、threadID、name、counter):
threading.Thread.\uuuuu init\uuuuuu(自)
self.threadID=threadID
self.name=名称
self.counter=计数器
def运行(自):
打印(“开始”+self.name)
打印时间(self.name,self.counter,5)
打印(“退出”+自身名称)
def打印时间(线程名称、计数器、延迟):
而柜台:
如果exitFlag:
threadName.exit()
时间。睡眠(延迟)
打印(“%s:%s”%(threadName,time.ctime(time.time()))
计数器-=1
thread1=myThread(1,“Thread-1”,1)
thread2=myThread(2,“Thread-2”,2)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
打印(“退出主线程”)
所以在真值测试中(当你检查某个东西是真是假时),你可以使用很多不同的值

假设您可以使用以下值表示false:

  • None
  • False
  • 任何数字类型的零,例如,
    0、0L、0.0、0j
  • 任何空序列,例如,,(),[]
  • 任何空映射,例如,{}
  • 用户定义类的实例,如果该类定义了一个
    \uuuu非零\uuuuuu()
    \uuuu len\uuuuu()
    方法,则该方法返回整数零或布尔值False
其他任何东西都是正确的

在这个程序中,
exitFlag
是一个整数。代码

if exitFlag:                                   
        threadName.exit()
基本上是说:“如果exitFlag是而不是0,则退出线程”


这就是说,代码似乎从未从
0
更改
exitFlag
,因此此if语句可能永远不会被输入

是另一个有效的副本,因为……无论哪种方式,这里的任何代码都不会进入
if exitFlag:
if test:
部分,因为这两个部分中都没有为被测变量赋值。