python - unboundLocalError:分配前引用的局部变量“loopback”
问题描述
我的代码如下:
import openpyxl
from openpyxl import load_workbook
def process(input="Input-Migration Table.xlsx", output_dir="\output"):
dic_atn = {}
for row in sheet2.iter_rows(min_col=3,min_row=2,max_col=3,max_row=17):
for cel in row:
dic_atn[cel.value] = ""
for key in dic_atn:
for i in range(3,6):
if(sheet1.cell(row=i,column=1).value == key):
loopback = sheet1.cell(row=i,column=2).value
break
for col_config in range(2,11):
if(sheet3.cell(row=1,column=col_config).value == sheet2.cell(row=row,column=24).value + "-" + sheet2.cell(row=row,column=23).value):
for i in range(3,78):
if "<Loopback0>" in sheet3.cell(row=i,column=col_config).value:
new_loopback = sheet3.cell(row=i, column=col_config).value.replace("<Loopback0>",loopback)
process()
我从谷歌搜索,它说这个错误是由于使用函数外的变量引起的,但是在这里,变量“loopback”被定义并全部在函数过程中使用,为什么我仍然得到这个错误?
解决方案
赋值前的错误引用表明该变量在被调用之前尚未创建。
在您的情况下,这是由于仅在一组特定语句为真时才定义变量。
for i in range(3,6):
if(sheet1.cell(row=i,column=1).value == key):
loopback = sheet1.cell(row=i,column=2).value
break
如果您的 if 语句从未找到匹配项,则不会将环回创建为变量。这会导致您在分配之前获得错误参考,因为它从未被分配过。
如果要确保变量始终具有引用,则可以在 if 语句之前单独定义变量,并使用默认值(或无)。
loopback = ''
如果这不是解决问题的可行方法,则需要处理 if 语句以确保每次运行应用程序时都匹配。
推荐阅读
- mysql - 以相同格式从 MySQL TEXT 类型中检索数据
- c++ - 使用 realloc 自定义池化内存分配器
- sql - 在 SQL Server 中选择唯一列
- json - 如何使用 Codable 将 JSON 解析为 NSManagedObject?
- c# - 如何使用输出参数实现 azure 异步函数
- database - SequoiaDB导入工具如何使用?
- php - 检查一个数组的值是否存在于另一个数组中
- javascript - Javascript将地理位置作为字符串变量传递
- android - Activity 中的奇怪行为 ViewModel 观察者调用方法 - MVVM 架构
- python - 如何在 Python 3 中将 PNG 数据的 hexdump 字符串转换为二进制?