我尝试了以下操作并收到“x未定义”的错误消息。
def test():
x = 2
y = 3
return x
def main():
test()
print(2 + x)
main()
为什么不起作用?
答案 0 :(得分:3)
您需要再次指定x
,并且这样做的方式是x = test()
。来自x
的{{1}}仅存在于test
中,这就是您需要重新分配的原因。
它甚至不必是x,可能是x
或y
:z
只是您返回的名称,你在x
中使用的值可以被称为任何东西!
或者,您可以直接在main()
中调用该函数,在这种情况下,您甚至不需要主函数中的第一行:
main()
答案 1 :(得分:3)
request
在x
中定义,但在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)