在已定义函数中定义变量时出错(Python)

时间:2018-09-20 16:37:56

标签: python python-3.x

考虑以下代码(运行此代码时收到名称错误)

item = input("What food???")
def itemcheck():
    if item == "chex":
        cereal = "Yummy"
    else:
        cereal = "Yuck!"

itemcheck()
print(cereal)

未定义名称为“谷物”的错误。我犯了什么错误/如何解决?在自己的函数中定义变量的正确方法是什么?

4 个答案:

答案 0 :(得分:1)

您的代码应更加优化。您可以尝试以下方法:

def itemcheck():
    if item == "chex":
        return "Yummy"
    else:
        return "Yuck!"
item = input("What food???")
cereal = itemcheck()
print(cereal)

您要在函数内部而不是在全局范围内定义cereal。这就是为什么您无法在函数外部访问cereal

答案 1 :(得分:1)

使用全局变量

在函数内部定义的变量是该函数的局部变量。但是,如果将其声明为全局变量,则可以在函数外部访问它。

item = input("What food???")
def itemcheck():
    global cereal
    if item == "chex":
        cereal = "Yummy"
    else:
        cereal = "Yuck!"

itemcheck()
print(cereal)

使用返回语句

您可以创建一个return语句,该语句指定要传递回调用该函数的代码的值。

item = input("What food???")
def itemcheck():
    if item == "chex":
        return "Yummy"
    else:
        return "Yuck!"

print(itemcheck())

答案 2 :(得分:0)

item = input("What food???")
def itemcheck():
    if item == "chex":
        cereal = "Yummy"
    else:
        cereal = "Yuck!"
    return cereal

cereal = itemcheck()
print(cereal)

您没有从函数中返回谷物。由于谷物是在函数中声明的,除非您从函数中返回它,否则在函数完成调用后它就不存在。因此,您需要在函数退出之前将其返回。

答案 3 :(得分:0)

def itemcheck():
    item = input("What food???")
    cereal = item
    if item == "chex":
        cereal = "Yummy"
    else:
        cereal = "Yuck!"
    print(cereal)

itemcheck()