while(this)和True之间有什么区别

时间:2014-08-22 10:34:45

标签: python sockets while-loop

这两个实现之间存在差异,我发现很难学习两个无限循环示例之间的区别,在套接字实现中使用它。

data = 'dummy'
while len(data): #infinite loop implemented here  
      data = socket.recv(2048)
      print data, ip, port

和第二个无限循环实现..

while True: #another example of an infinite loop
   data = socket.recv(2048)
   print data, ip, port

3 个答案:

答案 0 :(得分:0)

第一个循环并不是无限的。 socket.recv可以返回空字符串,这意味着另一方关闭了连接。在这种情况下,第一个循环将停止,而" true"无限循环将尝试从封闭连接中读取。

答案 1 :(得分:0)

我不认为代码是平等的,因为:

in : bool(0)
out: False

在第一个示例中,如果data变为空列表或空字符串,则len(data) = 0以及0 -> False循环将停止。

第二个例子确实是一个无限循环。

答案 2 :(得分:0)

在第一种情况下,data被设置在循环内部,因此如果它被设置为长度为零的东西,则循环将退出。它不一定是无限循环。

在第二种情况下,循环不会退出(除非引发异常)。