Python中if x:的含义及代码中条件判断的理解咨询
Python中
if x:语句的含义及代码判断解析 关于if x:的通用逻辑
Python里的if x:语句核心是判断x的布尔真值:如果x是「真值」,就执行if块的代码;如果是「假值」,则跳过。
常见的真值包括:非零数字、非空的字符串/字节串/列表/字典等容器对象、True;
常见的假值包括:0、0.0、空的序列/容器(比如b''、[]、{})、None、False。
针对你代码里的两个判断解析
第一个判断:if mask & selectors.EVENT_READ:
这个理解不准确。这里的&是按位与操作,不是判断相等。selectors.EVENT_READ是一个位掩码常量(通常是2的整数次幂,比如1),当mask和它做按位与时:
- 如果结果不为
0,说明mask的对应位被置1,意味着当前socket存在可读事件; - 如果结果为
0,则表示没有可读事件。
所以这个判断的真实含义是:「如果当前socket有可读事件」,而不是「mask与EVENT_READ相等」。
第二个判断:if recv_data:
这个理解是正确的。sock.recv(1024)返回的是字节串:
- 当对方关闭连接时,
recv()会返回空字节串b'',属于假值,会进入else块关闭连接; - 当收到数据时,返回非空的字节串,属于真值,会执行
data.outb += recv_data把数据追加到缓冲区。
内容的提问来源于stack exchange,提问作者user8901723980173
相关产品推荐
相关产品推荐

