【问题标题】:Multiple variable declaration多变量声明
【发布时间】:2015-04-16 13:46:45
【问题描述】:

我在Python中看到了这个声明,但是我不明白它是什么意思,也找不到解释:

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

问题是:为什么retthresh 之间有一个逗号?这是什么类型的任务?

【问题讨论】:

    标签: python opencv variable-declaration


    【解决方案1】:

    这是一个 "tuple""destructuring" 赋值 - 参见例如Multiple assignment semanticscv2.threshold 返回一个包含两个值的元组,所以它相当于:

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

    请参阅语言参考中的Assignment Statements

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        a, b = (0, 1)
        # a == 0
        # b == 1
        

        您的代码与以下内容相同:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 2014-09-04
          相关资源
          最近更新 更多