python - 为什么我不能更改全局值?“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)
解决方案
您可以使用
def report_list_maker(report_tuple):
global True_count, False_count
...
引用官方文档:
在 Python 中,仅在函数内部引用的变量是隐式全局的。如果一个变量在函数体内的任何地方都被赋值,除非明确声明为全局变量,否则它被假定为局部变量。
推荐阅读
- ubuntu - .net core web api访问容器中的文件夹
- android - 电报api配置项目异常
- python - TensorBoard 记录统计数据与训练分开
- javascript - 从子窗口调用父窗口函数不起作用
- javascript - XMLHttpRequest 循环
- php - 无法获取简单的 PHP 表单来添加/更新到 MySQL 表
- php - 在 composer 包中使用独白
- c# - 更新到最新的 Xcode 和 VS 后,Xamarin ios 编译到 Iphone 失败
- javascript - jQuery 看不到我的 id
- python - 为什么 opencv3 需要 libavcodec56 而 opencv2 需要 libavcodec57