Python中`x, _, _ = ...`的写法是什么意思?结合pygame场景解析
代码中重复使用
_占位的逻辑说明 _的本质定位
_并非Python专属的特殊语法标记,只是Python社区约定俗成的占位变量名,用来标识“该位置的值无使用需求,获取后直接丢弃即可”的场景。
重复使用同一个_的合法性
代码中的序列解包赋值,执行逻辑是先完整取出右侧pygame.mouse.get_pressed()返回的全部3个值,再按顺序给左侧的变量依次赋值。重复出现的_本质是同一个普通变量,两次赋值后最终存储的是第三个返回值,但因为我们从一开始就不需要这两个位置的内容,后续完全不会读取这个变量的值,赋值过程不会对实际逻辑造成任何干扰,写法完全合规。
两个_对应的具体含义
pygame.mouse.get_pressed()的返回值是固定顺序的三个布尔值,和代码中的左侧赋值位置一一对应:
- 第1个返回值:鼠标左键的按下状态,被赋值给
click,是这段代码真正需要采集的内容 - 第2个返回值:鼠标中键(滚轮按压状态)的按下结果,对应第一个
_,代码不需要使用 - 第3个返回值:鼠标右键的按下结果,对应第二个
_,代码不需要使用
写法的实际优势
如果不使用占位写法,等价的冗余代码会生成两个完全用不到的变量:
left_status, middle_status, right_status = pygame.mouse.get_pressed() click = left_status
用连续的_占位的写法,既满足了序列解包的位置匹配要求,又不会产生多余的冗余变量,是Python处理“仅需要序列中部分元素”场景的通用实践。
内容的提问来源于stack exchange,提问作者user196736
相关产品推荐
相关产品推荐

