这两个实现之间存在差异,我发现很难学习两个无限循环示例之间的区别,在套接字实现中使用它。
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
答案 0 :(得分:0)
第一个循环并不是无限的。 socket.recv
可以返回空字符串,这意味着另一方关闭了连接。在这种情况下,第一个循环将停止,而" true"无限循环将尝试从封闭连接中读取。
答案 1 :(得分:0)
我不认为代码是平等的,因为:
in : bool(0)
out: False
在第一个示例中,如果data
变为空列表或空字符串,则len(data) = 0
以及0 -> False
循环将停止。
第二个例子确实是一个无限循环。
答案 2 :(得分:0)
在第一种情况下,data
被设置在循环内部,因此如果它被设置为长度为零的东西,则循环将退出。它不一定是无限循环。
在第二种情况下,循环不会退出(除非引发异常)。