Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 多变量声明_Python_Opencv_Variable Declaration - Fatal编程技术网

Python 多变量声明

Python 多变量声明,python,opencv,variable-declaration,Python,Opencv,Variable Declaration,我在Python中看到了这个声明,但我不理解它的含义,也找不到解释: ret, thresh = cv2.threshold(imgray, 127, 255, 0) 问题是:ret和thresh之间为什么有逗号?这是什么类型的赋值?这是一种值解包语法。 cv2.threshold(imgray,127255,0)返回一个两元素元组。 使用此语法,您可以将此元组的元素分配给单独的变量ret和thresh,这是一个“元组”或“解构”分配-请参见示例cv2.threshold返回一个包含两个值的元

我在Python中看到了这个声明,但我不理解它的含义,也找不到解释:

ret, thresh = cv2.threshold(imgray, 127, 255, 0)

问题是:
ret
thresh
之间为什么有逗号?这是什么类型的赋值?

这是一种值解包语法。
cv2.threshold(imgray,127255,0)
返回一个两元素元组。
使用此语法,您可以将此元组的元素分配给单独的变量
ret
thresh

,这是一个“元组”或“解构”分配-请参见示例
cv2.threshold
返回一个包含两个值的元组,因此它等效于:

temp = cv2.threshold(...)
ret = temp[0]
thresh = temp[1]
请参见语言参考中的:

如果目标列表是以逗号分隔的目标列表:对象必须是一个iterable,其项数必须与目标列表中的目标数相同,并且这些项从左到右分配给相应的目标


您可以使用此语法将元组解压为单个变量,例如。g、 :

a, b = (0, 1)
# a == 0
# b == 1
您的代码与以下代码相同:

result = cv2.threshold(...)
ret = result[0]
thresh = result[1]