首页 > 解决方案 > 为什么我不能更改全局值?“UnboundLocalError”

问题描述

我正在尝试编写一个程序来获取报告并将它们添加到元组列表中。该程序还应该创建一个字典,其值作为两个整数的列表。但是当我尝试更改两个计数器的全局值时,出现错误:“UnboundLocalError: local variable 'False_count' referenced before assignment”。

report_list = []
success = True

report1 = ('nano1', 'Frida', False)
report2 = ('bio_x', 'Arnar', True)
report3 = ('nano1', 'Frida', True)

True_count = 0
False_count = 0
status_dict = {'nano1': [0,0], 'bio_x': [0,0]}



def report_list_maker(report_tuple):
    report_list.append(report_tuple)
    if report_tuple[2] == True:
        True_count += 1
    elif report_tuple[2] == False:
        False_count += 1
        print("False")


    temp_dict = {report_tuple[0]:[False_count, True_count]}
    status_dict.update(temp_dict)

report_list_maker(report1)
report_list_maker(report2)
report_list_maker(report3)

print(report_list)
print(status_dict)

标签: python

解决方案


您可以使用

def report_list_maker(report_tuple):
    global True_count, False_count
    ...

引用官方文档

在 Python 中,仅在函数内部引用的变量是隐式全局的。如果一个变量在函数体内的任何地方都被赋值,除非明确声明为全局变量,否则它被假定为局部变量。


推荐阅读