似乎python确实有名称空间。但我能得到的是人们告诉我什么名称空间或范围。那么如何在python中定义命名空间?我只需要语法(并举例说明会更好)。
答案 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.py
和b.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()
我希望这有助于更多地阐明使用方法。