从python模块正确返回变量

时间:2013-05-25 18:08:59

标签: python

我确信这很荒谬,但我无法让它发挥作用。

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

file:user_module

def test ():
    x =5
    return x

file:main_program

import user_module
user_module.test()
print x

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

NameError: name 'x' is not defined

2 个答案:

答案 0 :(得分:6)

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

这将工作:
file:user_module

 def test ():
     x =5
     return x

 print x

产生NameError (这并不意味着一般的解决方案是让一切全局可用......)

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

 import user_module
 x = user_module.test()
 print x

或者不是打印x而是打印test()的结果。

 print user_module.test()

答案 1 :(得分:4)

这是因为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