【问题标题】:Python error when asking to return a variable (referenced before assignment)要求返回变量时出现 Python 错误(在赋值之前引用)
【发布时间】:2020-10-31 22:48:14
【问题描述】:

我有以下代码,但 Python 一直说“在赋值之前引用了局部变量 'a'

def inter(X,Y):
    if pertenece(cabeza(X),Y):
        a = lista(cabeza(X),inter(cola(X),Y))
    elif vacia(cola(X)): return a
    else: inter(cola(X),Y)

我不知道为什么会出现这个错误,因为我在引用它之前已经定义了 'a'。请帮忙。

函数'pertenece'、'cabeza'、'cola'、'vacia'和' lista' 之前定义的都没有问题。

【问题讨论】:

  • return a 只会在 pertenece(cabeza(X),Y) 为 False 时发生,但 a 只会在 pertenece(cabeza(X),Y) 为 True 时设置。当pertenece(cabeza(X),Y) 为假时,您希望a 是什么?
  • 进入if条件后不会进入elif条件。
  • @Carcigenicate ,有没有办法“带来'a'的价值?比如为“a”分配一个永久值?
  • @RandomUser 设置在if之前。

标签: python variables


【解决方案1】:

我认为这是因为您在 if 子句中初始化 var a 并在另一个 if 子句中引用它,因此考虑到它可能会或可能不会在 if 子句中引用它之前被初始化的条件。您可以尝试在第一个 if 子句之前在函数体内将 a 初始化为空值或 null 值。也许这会有所帮助。

【讨论】:

    【解决方案2】:

    您只在第一个条件语句中定义了a。如果代码从未经历过这种情况,那么a 将永远不会被定义。您必须在条件语句之前为 a 分配一些默认值,以防止 return 语句向您抛出错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 2013-07-04
      相关资源
      最近更新 更多