加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 22:45:10 所属栏目:Python 来源:网络整理
导读:似乎python确实有名称空间.但我能得到的是人们告诉我什么名称空间或范围.那么如何在python中定义命名空间?我只需要语法(并举例说明会更好). 最佳答案 Python中的“命名空间”更多地由磁盘上的代码布局定义,而不是任何特定语法.给定目录结构: my_code/ modu

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

最佳答案
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 *

这里,并且在module_a / a.py中定义的任何其他符号也可用.

如果我们想要访问module_a / a.py的fn()以及module_b / b.py中的fn(),我们可以做以下两件事之一:我们使用from模块导入东西作为语法:

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()和module_b_fn(),或者我们可以直接导入模块并在代码中引用它,因此在main.py中:

import module_a.a
import module_a.b

module_a.a.fn()  # call fn() from module_a/a.py
module_a_b.fn()  # call fn() from module_a/b.py

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读