【问题标题】:Calling a variable from another function从另一个函数调用变量
【发布时间】:2025-12-06 21:20:05
【问题描述】:

这是我遇到的问题类型的一个简单示例:

def making_list(text):
    list_ = []
    i = 0
    while i < int(len(text)):
        list_.append(text[i])
        i += 1
    return list_

def calling_list(list_):
    print list_

text = raw_input("text input")

making_list(text)
calling_list(list_)

来自ma​​king_list的变量list_不能被calling_list函数识别。有什么办法可以解决这个问题?

谢谢

【问题讨论】:

  • 请注意making_list(text) 等价于list(text)。例如:list("abcd") == ['a', 'b', 'c', 'd']
  • 确实,一般来说,在 Python 中按索引循环是一个非常糟糕的主意

标签: python function error-handling


【解决方案1】:

您没有将变量存储在任何地方。

mylist = making_list(text)
calling_list(mylist)

说明:变量名仅在函数范围内有效。如果你离开函数(返回一些局部变量),你只返回变量的“值”,而不是它的名字,你需要将它分配给外部变量。

【讨论】:

  • 调用变量list是个坏主意,你在砸list()
【解决方案2】:

您必须声明将making_list 的输出作为其值的变量。 making_list 函数返回list_;但是,如果您不将它分配给函数之外的另一个变量,则无法访问它。

list_ = making_list(text) 会解决你的问题。

【讨论】:

    【解决方案3】:

    您的making_list-函数不返回任何内容。这将起作用

    list = making_list(text)
    calling_list(list)
    

    这会起作用的。

    【讨论】:

      【解决方案4】:

      我不想更改或优化你的代码,我只是想给出一个可能的解决方案:

      1)如果您希望将list_ 存储在内存中,请将代码的最后两行更改如下:

      list_=making_list(text)
      calling_list(list_)
      

      现在您可以在代码中的任何位置访问 list_。

      2)如果您不想存储 list_ 并且只想打印它并忘记它,请删除代码的最后 2 行并改写这一行:

      calling_list(making_list(text))
      

      【讨论】: