我确信这很荒谬,但我无法让它发挥作用。
我想将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
答案 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