1. 包 A 和包 B 下有同名模块也不会冲突, 因为 A.a 与 B.a 来自俩个命名空间
2. 常见目录结构
- # 创建目录代码
- import os
- os.makedirs(glance/api)
- os.makedirs(glance/cmd)
- os.makedirs(glance/db)
- l = []
- l.append(open(glance/__init__.py,w))
- l.append(open(glance/api/__init__.py,w))
- l.append(open(glance/api/policy.py,w))
- l.append(open(glance/api/versions.py,w))
- l.append(open(glance/cmd/__init__.py,w))
- l.append(open(glance/cmd/manage.py,w))
- l.append(open(glance/db/models.py,w))
- map(lambda f:f.close() ,l)
3. 目录结构
- glance/ #Top-level package
- __init__.py #Initialize the glance package
- api #Subpackage for api
- __init__.py
- policy.py
- versions.py
- cmd #Subpackage for cmd
- __init__.py
- manage.py
- db #Subpackage for db
- __init__.py
- models.py
4. 文件内容
- # 文件内容
- #policy.py
- def get():
- print(from policy.py)
- #versions.py
- def create_resource(conf):
- print(from version.py: ,conf)
- #manage.py
- def main():
- print(from manage.py)
- #models.py
- def register_models(engine):
- print(from models.py: ,engine)
5. 软件开发规范
6. 绝对导入
- glance/
- __init__.py from glance import api
- from glance import cmd
- from glance import db
- api
- __init__.py from glance.api import policy
- from glance.api import versions
- policy.py
- versions.py
- cmd from glance.cmd import manage
- __init__.py
- manage.py
- db from glance.db import models
- __init__.py
- models.py
7. 相对导入
- glance/
- __init__.py from . import api #. 表示当前目录
- from . import cmd
- from . import db
- api
- __init__.py from . import policy
- from . import versions
- policy.py
- versions.py
- cmd from . import manage
- __init__.py
- manage.py from ..api import policy
- #.. 表示上一级目录, 想再 manage 中使用 policy 中的方法就需要回到上一级 glance 目录往下找 api 包, 从 api 导入 policy
- db from . import models
- __init__.py
- models.py
8.import glance 之后直接调用模块中的方法
- glance/
- __init__.py from .api import *
- from .cmd import *
- from .db import *
- api
- __init__.py __all__ = [policy,versions]
- policy.py
- versions.py
- cmd __all__ = [manage]
- __init__.py
- manage.py
- db __all__ = [models]
- __init__.py
- models.py
- import glance
- policy.get()
- import glance
来源: http://www.bubuko.com/infodetail-2500579.html