如何在python中定义命名空间?

时间:2016-09-28 09:48:53

标签: python

似乎python确实有名称空间。但我能得到的是人们告诉我什么名称空间或范围。那么如何在python中定义命名空间?我只需要语法(并举例说明会更好)。

1 个答案:

答案 0 :(得分:3)

A"命名空间"在Python中,更多地由磁盘上的代码布局定义,而不是使用任何特定语法。给定目录结构:

my_code/
    module_a/
        __init__.py
        a.py
        b.py
    module_b/
        __init__.py
        a.py
        b.py
    __init__.py
    main.py

并假设每个a.pyb.py文件包含一个函数fn(),解析命名空间的导入语法就像这样(来自main.py):

from module_a.a import fn  # fn() from module_a/a.py
from module_a.b import fn  # fn() from module_a/b.py
from module_b.a import fn  # fn() from module_b/a.py
from module_b.b import fn  # fn() from module_b/b.py

此时,fn()内的main.py可用,并会调用您导入的任何实现。

也可以使用from module import *语法,但不鼓励更具体:

from module_a.a import *

此处fn()可以使用main.py,{em} {/ 1>}中也可以使用。{/ 1>。

如果我们想要同时访问module_a/a.py module_a/a.py以及来自fn()的{​​{1}},我们可以执行以下两项操作之一:我们使用fn()语法:

module_b/b.py

并在我们的from module import thing as something from module_a.a import fn as module_a_fn from module_b.b import fn as module_b_fn main.py中使用它们,或者我们只需导入模块并直接在代码中引用它,因此在module_a_fn():< / p>

module_b_fn()

我希望这有助于更多地阐明使用方法。