在分配错误之前引用变量,尽管在分配之前引用了该变量

问题描述 投票:-2回答:2

这很可能是我的错误,因为编码时缺乏技能,但是我遇到了以前从未有过的东西,那就是在使用函数并将它们引用其他函数时,变量可能会混乱并产生错误。我需要有人帮助分解正在发生的事情。请帮助并提前谢谢您

import os

def main():
  if os.path.exists("Text.txt")==True:
    with open("Text.txt", "r") as f:
      li=[]
      for lines in f:
        li.append(eval(lines))
    for i in range(0, len(li)):
      if i == 0:
        a = li[i]
      elif i == 1:
        b = li[i]
      elif i == 2:
        c = li[i]
      elif i == 3:
        d = li[i]
      else:
        pass
  else:
    open("Text.txt", "w").close
    a=[1]
    b=[2]
    c=[3]
    d=[4]
  menu(a, b, c, d)
def menu(a, b, c, d):
  print(a, b, c, d)

main()

当我运行代码时,出现错误提示:追溯(最近一次通话):main()中的文件“ main.py”,第30行,main()中文件“ main.py”,第26行,菜单(a,b,c,d)UnboundLocalError:分配前已引用局部变量'c'

python function operating-system text-files
2个回答
0
投票

变量c​​并非总是在您的代码中定义。

例如,使用类似的检查:

def main():
  c=None
  ...
  if ...
  ...

0
投票
    import os


def main():
    a, b, c, d = None,None,None, None # Use None or any other data type you are using
    if os.path.exists("Text.txt"):
        with open("Text.txt", "r") as f:
            li = []
            for lines in f:
                li.append(eval(lines))

        for i in range(0, len(li)):
            if i == 0:
                a = li[i]
            elif i == 1:
                b = li[i]
            elif i == 2:
                c = li[i]
            elif i == 3:
                d = li[i]
            else:
                pass
    else:
        open("Text.txt", "w").close
        a = [1]
        b = [2]
        c = [3]
        d = [4]
    menu(a, b, c, d)


def menu(a, b, c, d):
    print(a, b, c, d)

main()

在之前定义a,b,c和d,并应解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.