python从模块导入哪些属性?

What attributes does python import from a module?

我检查了一些类似这样的答案,但是我还有一个问题,关于从Python中的模块导入哪些属性。

例如,我有一个模块temp9.py

1
2
3
4
5
6
7
8
a=10
b=20
print('a={0}, b={1}'.format(a,b))
def t9outer():

    print('in imported module')
    def t9inner():
        print('inner function')

然后我像这样导入这个模块:import temp9。如果使用此命令获取导入文件的属性:

1
list(filter(lambda x: not x.startswith('__'),dir(temp9)))

我得到这个输出:

1
['a', 'b', 't9outer']

我的问题是

  • ab仅在temp9的范围内是全局的,而不是跨模块的(正如上面的答案所说),那么它是如何导出的呢?

  • 为什么t9inner()没有进口,即使它是由t9outer()所附,进口?


两个问题的答案相同。导入模块级别定义的所有内容;不导入模块级别未定义的任何内容。