从另一个模块访问函数中的变量?

时间:2017-04-27 18:34:19

标签: python import module

两个.py文件,to_be_imported.py有:

def func(a):

    b = a + "!!!"
    c = b + " Mike!!!"
    print c

import.py有:

from to_be_imported import *
func("hey")

但是当我尝试访问变量b时,我收到错误AttributeError: 'NoneType' object has no attribute 'b'.

如何在赋予函数值b后获取"hey"的值?

2 个答案:

答案 0 :(得分:0)

to_be_imported 的变量 b 。程序中唯一的 b func 的本地,并在退出该函数时消失。执行此操作的规范方法是:

def func(a):

    b = a + "!!!"
    c = b + " Mike!!!"
    print c
    return b

...

from to_be_imported import *
local_b = func("hey")

还有其他方法可以做到这一点。例如,您可以将 b 设为 to_be_imported 的全局变量,然后使用类似

的内容访问它
print to_be_imported.b

然而,这通常不是一个好主意。另外,请注意,使远程功能同时打印输出并返回值并不是一个好主意。模块和传递信息非常酷,但请确保遵循教科书或教程中的建议,以免日后出现调试问题。

答案 1 :(得分:0)

您可以考虑返回该值,如下例所示:

def add_one(numb):
    """Given a number, add one and return it."""
    r = numb +1
    return r

另请注意,执行from module import *通常是不好的做法,因为它可能会覆盖执行该导入的模块中的函数。 您可以尝试仅导入所需内容,例如:from mymodule import func, func_two, func_three