我的简单代码就像这样:
在my_stuffmodule1.py
中,我有以下内容:
import sys
def main():
result = 'found stuff here'
return result
if __name__ == '__main__':
main()
我想在下面的下一个模块中使用my_stuffmodule1
返回的结果,名为my_stuffmodule2
:
import my_stuffmodule1
result
class Use_stuff(object):
def stuff1(self):
for item in result:
code..
def stuff2(self):
code...
但我得到错误,例如'结果未定义'。我想在my_stuffmodule2
答案 0 :(得分:0)
猜测一下,我说它是因为您正在导入第一个文件,而结果字符串只有在&#的上下文中运行时才会被设置39;主&#39 ;.此外,您将返回结果变量 - 该变量是在main()函数的范围内定义的,而不是在' global'范围,原样。
如果你只想在main()函数之外设置变量结果,那有用吗?
或者,在第二个脚本中将result的值设置为main()函数的返回值。
以下是第二个选项的工作示例..
<强> my_stuffmodule1 强>
import sys
def main():
result = 'found stuff here'
return result
if __name__ == '__main__':
main()
<强> my_stuffmodule2 强>
import my_stuffmodule1
result = my_stuffmodule1.main()
class Use_stuff(object):
def stuff1(self):
for item in result:
code..
def stuff2(self):
code...
答案 1 :(得分:0)
如果您想要result
的{{1}}方法main
,则需要执行该模块的主要方法,在这种情况下。
例如
my_stuffmodule1
答案 2 :(得分:0)
result
中定义了my_stuffmodule1.main
,只有在main()
内才能看到main()
,一旦你致电import my_stuffmodule1
result = my_stuffmodule1.main()
,就会被退回。
所以在你的第二个模块中,你需要这样做:
main()
现在,您将在第二个模块中获得结果的值。如果您不想这样做,那么在第一个模块中,您需要确保在评估模块时(导入时)调用def main():
return 'result found here'
result = main()
。为此,您需要在全局范围内调用main,如下所示:
import my_stuffmodule1
result = my_stuffmodule1.result
现在,当您导入模块时,将调用main()并执行此操作:
my_stuffmodule1.result
请注意,您仍然必须使用result
,因为您是直接导入模块。如果您只想显示from my_stuffmodule1 import result
,则可以执行此操作:
result
但是,请记住,这会覆盖您在第二个模块中可能拥有的任何其他my_stuffmodule1.result
。因此,最好导入模块,然后使用{{1}}限定名称。