如何在方法中定义时导入变量

时间:2014-06-12 07:20:51

标签: python-2.7

我的简单代码就像这样:

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

中使用结果字符串中的项目

3 个答案:

答案 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}}限定名称。