所以,我在下面有这个东西
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
这是什么意思,我该如何解决?
答案 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}}