【问题标题】:Error with referencing a variable before assignment python在分配python之前引用变量时出错
【发布时间】:2022-10-22 05:03:07
【问题描述】:

我有一个 for 循环作为更大函数的一部分:

for table in tables_list:
   if table["file"] == file:
      table_name = table["table_name"]
      break
log.info(f"table: {table_name}")

我收到一条错误消息,指出在分配 UnboundLocalError: local variable 'table_name' referenced before assignment" 之前正在引用该变量。不知道为什么会这样,因为在循环中满足条件然后循环停止时没有分配变量 table_name ?

【问题讨论】:

  • 如果 table["file"] 永远不等于 file 会发生什么,变量 table_name 永远不会创建...
  • 这是一个设计问题。当列表中没有表格或没有符合您条件的表格时,您希望发生什么?应该包括实现您的选择的代码。引发的异常可能已经是最好的解决方案。

标签: python reference variable-assignment


【解决方案1】:

您需要在循环之前声明table_name,这可能会导致不满足此条件table["file"] == file,因此此时table_name 将未被声明。

table_name = None # declare here
for table in tables_list:
   if table["file"] == file:
      table_name = table["table_name"]
      break
log.info(f"table: {table_name}")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多