Python中while True循环内单行为两个变量赋值的语法含义是什么?
相关问题解答
赋值语法含义
你看到的是Python的**序列解包(元组解包)**语法。
首先先纠正你示例代码里的两处OpenCV API笔误:cv2.imshow()返回值为None,无参数的cv2.imread()是非法写法,二者都不会返回二元组,这两段实际是视频流帧读取的常见写法,正确形式如下:
# 初始化摄像头采集实例 cap = cv2.VideoCapture(0) while True: success, image = cap.read()
cap = cv2.VideoCapture(0) while True: _, frame = cap.read()
其中cap.read()方法会固定返回包含两个元素的元组:第一个是布尔值,代表本次帧读取是否成功;第二个是读取到的图像帧数组。序列解包会直接把元组里的两个值按顺序赋值给左侧的两个变量。
为什么可以同时给两个变量赋值
Python支持函数/方法返回元组类型的结果,只要等号左侧变量的数量和右侧返回元组的元素数量完全匹配,解释器就会自动按位置对应完成赋值,不需要额外手动索引取值。
举个最简示例:
def demo(): # 等价于 return (True, "test.jpg") return True, "test.jpg" # 直接解包赋值 is_ok, filename = demo() # 此时is_ok = True,filename = "test.jpg"
其中_是Python社区通用的占位变量约定,代表这个位置的返回值后续不会用到,无需专门起有意义的变量名。
success是不是Python内置命令
完全不是。它只是开发者自定义的变量名,作用是语义化标识「帧读取是否成功」的状态值,你可以替换成任意合法变量名(比如常用的ret、is_success都可以),和Python的内置语法、内置命令没有任何关联。
内容的提问来源于stack exchange,提问作者Aarav
相关产品推荐
相关产品推荐

