简单的查询:为什么说这个变量是未定义的?

时间:2014-02-17 02:05:27

标签: python variables undefined

我对Python很陌生。我正在使用最新版本。我正在使用的代码如下:

def tts():
    print('(0) Input a new list')
    print('(1) Print the current list')

    choice = int(input('Enter your choice: '))

    if choice == 0:
        newList = eval(input('Enter a new list of prices: '))
        tts();

    elif choice == 1:
        return newList

所以,我首先运行函数tts()。它打印出它应该的内容,并提示我输入。我输入0,并输入一个列表,如[20,10,30]。在那一点点击后,不应该将变量newList分配给我输入的列表吗?它似乎不起作用。如果我稍后在Shell中键入newList,则表示未定义newList。据推测,出于同样的原因,如果我后来选择1作为我的选择,则会说未定义newList。

我非常感谢一些建议。我很沮丧,我怀疑这是一个我不知道的非常微不足道的问题。

2 个答案:

答案 0 :(得分:2)

你是递归地调用tts()(为什么?),而newList是一个局部变量。进行递归调用时,新堆栈框架中未定义newList

将代码重组为循环而不是递归可能是最简单的。然后,您将没有新的堆栈框架,newList仍然可以访问。

答案 1 :(得分:1)

您的“newList”在if语句中定义,并且在ELSE语句中返回。因此,如果它成为elif,那么它永远不会被创建。