函数中定义的变量在另一个调用第一个函数的函数中不可用

时间:2015-07-15 18:03:41

标签: python python-3.x

我尝试了以下操作并收到“x未定义”的错误消息。

def test():
    x = 2
    y = 3
    return x

def main():
    test()
    print(2 + x)

main()

为什么不起作用?

5 个答案:

答案 0 :(得分:3)

您需要再次指定x,并且这样做的方式是x = test()。来自x的{​​{1}}仅存在于test中,这就是您需要重新分配的原因。

它甚至不必是x,可能是xyz只是您返回的名称,你在x中使用的值可以被称为任何东西!

或者,您可以直接在main()中调用该函数,在这种情况下,您甚至不需要主函数中的第一行:

main()

答案 1 :(得分:3)

requestx中定义,但在test

中未定义

这意味着main范围内未定义x

有关范围的更多详细信息,请查看this question。具体来说是this answer

如果要在main中使用分配给x的值,则需要将test的返回值指定为名称:

test

答案 2 :(得分:1)

由于范围不合适。 X在test中定义,但不在main()中定义。尝试在main中设置x = test(),一切都适合你。

答案 3 :(得分:0)

由于x是在test()中本地定义的,因此它不能被main使用。相反,您可以直接使用test的输出,如下面的代码所示:

def main():
    value_of_x_from_test = test() # This is the same as `x = 2` in `test`.
    print(2 + value_of_x_from_test)

答案 4 :(得分:0)

要在x中获取main()的值,您必须将其分配给某些内容:

def main():
    value = test() # The variable can be 'value' or any other valid name, including 'x'
    print(2 + value)