繁体   English   中英

unboundLocalError:赋值前引用了局部变量“loopback”

[英]unboundLocalError: local variable 'loopback' referenced before assignment

我的代码如下:

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()

我从谷歌搜索,它说这个错误是由使用函数外的变量引起的,但在这里,变量“环回”被定义并在函数过程中使用,为什么我仍然收到这个错误?

赋值前的错误引用表明该变量在被调用之前尚未创建。

在您的情况下,这是因为仅在一组特定语句为真时才定义变量。

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 语句以确保每次运行应用程序时它都匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM