奇怪的情况:UnboundLocalError:在赋值之前引用的局部变量'pic_name'

时间:2018-01-16 09:43:37

标签: python

我在python中遇到了问题。我不知道为什么会这样。 它应该在“print('done')”行中完成。

以下是我的示例python代码。

def check_count(img, count):

    global index_image_processing
    detection_count = count
    print ('index= ', index_image_processing)
    print ('detection_count = ', detection_count)

    if detection_count == 0:
        index_image_processing += 1 
        print ('1-index= ', index_image_processing)
        if index_image_processing <= 6:
            pic_plate_detect(img)
        else:
            print ('Cannot find')
            pic_name = 'Fail' + '.jpg'
        print ('2-index= ', index_image_processing)
        print ('detection_count=', detection_count)

    elif detection_count == 1:
        pic_name = 'single' + '.jpg'
        print ('detection_count == 1')
    elif detection_count >= 2:
        pic_name = 'muti_result' + '.jpg'
        print ('detection_count >= 2')

    print pic_name
    pic_path = './' + pic_name
    cv2.imwrite(pic_path, img)

    print ('done')

而且,我的结果如下:

('index= ', 1)
('detection_count=', 1)
detection_count == 1
single.jpg
done
('2-index= ', 1)
('detection_count=', 0)
Traceback (most recent call last):
...
UnboundLocalError: local variable 'pic_name' referenced before assignment

2 个答案:

答案 0 :(得分:0)

您尝试使用pic_name对其进行连接(即pic_name = 'single' + '.jpg')而不先将其初始化。与值赋值(即pic_name = 'single')相反,这在python中是不允许的。

答案 1 :(得分:0)

当detect_count为0且index_image_processing&lt; = 6时,

pic_name永远不会被创建,但您尝试无条件地打印它。 像这样初始化它:

pic_name = None

然后运行您的逻辑并仅在不是None

的情况下打印