Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 什么';What’while(这个)和while True之间的区别是什么_Python_Sockets_While Loop - Fatal编程技术网

Python 什么';What’while(这个)和while True之间的区别是什么

Python 什么';What’while(这个)和while True之间的区别是什么,python,sockets,while-loop,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(2

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

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

第一个循环实际上不是无限的
socket.recv
可以返回空字符串,这意味着另一端关闭了连接。在这种情况下,第一个循环将停止,而“真”无限循环将尝试从闭合连接读取数据。

我认为代码不相等,因为:

in : bool(0)
out: False
在第一个示例中,如果
data
将成为一个空列表或空字符串,那么
len(data)=0
并且由于
0->False
循环将停止


第二个例子是一个真正的无限循环。

在第一种情况下,
数据被设置在循环内部,因此如果它被设置为长度为零的某个值,循环将退出。它不一定是一个无限循环


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

如果
len(data)>0
永远退出,则操作没有差异;在这种情况下,后者更好,因为它显式是无限的。如果
len(data)==0
是可能的,那么它们是不等价的