2

我确信这非常简单,但我一直无法让它工作。

我想将模块'user_module'中的x函数中的值返回到我的'main_program'test

文件:用户模块

def test ():
    x =5
    return x

文件:主程序

import user_module
user_module.test()
print x

但是上面的代码不起作用:(我收到以下错误

NameError: name 'x' is not defined
4

2 回答 2

8

在您的模块中, x 在功能测试中定义。
这意味着它仅在该函数的范围内可用。
即使您尝试从模块中访问 x,您也会收到名称错误,因为 x 没有在该模块中全局定义。

不起作用
文件:user_module

 def test ():
     x =5
     return x

 print x

产生一个名称错误。
(这并不意味着一般的解决方案是让所有东西都在全球范围内可用......)

要解决您的问题,您可以创建一个名为 x 的变量。
您将不得不像这样更改您的代码:

 import user_module
 x = user_module.test()
 print x

或者,您可以只打印 test() 的结果,而不是打印 x。

 print user_module.test()
于 2013-05-25T18:13:09.597 回答
7

这是因为x是在函数中定义的,这意味着它在函数的范围内,而不是在模块的范围内。但是你的函数正在返回它——这很好:)。所以使用这些解决方案之一来获得x

1.

import user_module
print user_module.test()

2.

如果您想x从一个模块传递到另一个模块,那么您user_module将如下所示:

x = 5

并在主脚本中执行以下操作:

import user_module
print user_module.x

3.

或者你可以在你的user_module

def test():
    x = 5
    return x

x = test()

现在在你的主脚本中你这样做:

import user_module
print user_module.x
于 2013-05-25T18:10:26.690 回答