Python:变量没有定义?

时间:2015-11-08 15:50:22

标签: python

所以,我在下面有这个东西

def userinput():
    adjective1 = input("Adjective: ")
    noun1 = input("Noun: ")
    noun2 = input("Noun: ")

def story():
    print("A vacation is when you take a trip to some " + adjective1 + " place.")
    print("Usually you go to some place that is near " + noun1 + " or up on " + noun2 + ".")

然后当我运行函数并提供输入时,它会返回

 File "/Users/apple/Dropbox/MadLibs 6.py", line 52, in story
print("A vacation is when you take a trip to some " + adjective1 + " place with your "+ adjective2 + " family.")
NameError: name 'adjective1' is not defined

这是什么意思,我该如何解决?

3 个答案:

答案 0 :(得分:8)

它的所有关于范围,你不能在另一个函数范围内访问变量 试试这个:

def userinput():
    adjective1 = input("Adjective: ")
    noun1 = input("Noun: ")
    noun2 = input("Noun: ")
    return adjective1, noun1, noun2

def story():
    adjective1, noun1, noun2 = userinput()
    print("A vacation is when you take a trip to some " + adjective1 + " place.")
    print("Usually you go to some place that is near " + noun1 + " or up on " + noun2 + ".")

通过在第二个函数上调用userinput并获取其返回的信息,您可以访问它。请注意,adjective1,noun1和noun2形式的故事函数在该函数中是局部作用域的,因此它们与用户输入变量不同,尽管它们的名称相同。

答案 1 :(得分:0)

这些变量是函数的本地变量。这个答案提供了Python中作用域的一个很好的总结 - Short Description of the Scoping Rules?

您通常希望在可行的情况下尽可能地限制变量的可用范围,可能在这种情况下使用函数参数。

答案 2 :(得分:0)

试试这个:

{{1}}