包的补充

1.包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间

2.常见目录结构

  1 import os
  2 os.makedirs('glance/api')
  3 os.makedirs('glance/cmd')
  4 os.makedirs('glance/db')
  5 l = []
  6 l.append(open('glance/__init__.py','w'))
  7 l.append(open('glance/api/__init__.py','w'))
  8 l.append(open('glance/api/policy.py','w'))
  9 l.append(open('glance/api/versions.py','w'))
 10 l.append(open('glance/cmd/__init__.py','w'))
 11 l.append(open('glance/cmd/manage.py','w'))
 12 l.append(open('glance/db/models.py','w'))
 13 map(lambda f:f.close() ,l)
 14 
 15 创建目录代码
 16 
 17 创建目录结构
View Code

 

3.目录结构

  1 glance/                   #Top-level package
  2 
  3 ├── __init__.py      #Initialize the glance package
  4 
  5 ├── api                  #Subpackage for api
  6 
  7 │   ├── __init__.py
  8 
  9 │   ├── policy.py
 10 
 11 │   └── versions.py
 12 
 13 ├── cmd                #Subpackage for cmd
 14 
 15 │   ├── __init__.py
 16 
 17 │   └── manage.py
 18 
 19 └── db                  #Subpackage for db
 20 
 21     ├── __init__.py
 22 
 23     └── models.py
 24 
 25 目录结构
 26 
 27 目录结构
View Code

 

4.文件内容

5.软件开发规范

 

6.绝对导入

  1 glance/
  2 
  3 ├── __init__.py      from glance import api
  4                              from glance import cmd
  5                              from glance import db
  6 
  7 ├── api
  8 
  9 │   ├── __init__.py  from glance.api import policy
 10                               from glance.api import versions
 11 
 12 │   ├── policy.py
 13 
 14 │   └── versions.py
 15 
 16 ├── cmd                 from glance.cmd import manage
 17 
 18 │   ├── __init__.py
 19 
 20 │   └── manage.py
 21 
 22 └── db                   from glance.db import models
 23 
 24     ├── __init__.py
 25 
 26     └── models.py
 27 
 28 绝对导入
 29 
 30 绝对导入
View Code

7.相对导入

  1 glance/
  2 
  3 ├── __init__.py      from . import api  #.表示当前目录
  4                      from . import cmd
  5                      from . import db
  6 
  7 ├── api
  8 
  9 │   ├── __init__.py  from . import policy
 10                      from . import versions
 11 
 12 │   ├── policy.py
 13 
 14 │   └── versions.py
 15 
 16 ├── cmd              from . import manage
 17 
 18 │   ├── __init__.py
 19 
 20 │   └── manage.py    from ..api import policy
 21                      #..表示上一级目录,想再manage中使用policy中的方法就需要回到上一级glance目录往下找api包,从api导入policy
 22 
 23 └── db               from . import models
 24 
 25     ├── __init__.py
 26 
 27     └── models.py
 28 
 29 相对导入
 30 
 31 相对导入
View Code

 

8.import  glance 之后直接调用模块中的方法

  1 glance/
  2 
  3 ├── __init__.py     from .api import *
  4                     from .cmd import *
  5                     from .db import *
  6 ├── api
  7 
  8 │   ├── __init__.py   __all__ = ['policy','versions']
  9 
 10 │   ├── policy.py
 11 
 12 │   └── versions.py
 13 
 14 ├── cmd               __all__ = ['manage']
 15 
 16 │   ├── __init__.py
 17 
 18 │   └── manage.py
 19 
 20 └── db                __all__ = ['models']
 21 
 22     ├── __init__.py
 23 
 24     └── models.py
 25 
 26 
 27 import glance
 28 policy.get()
 29 
 30 import glance
View Code

 

 

 

归类:Python相关

原文地址:https://www.cnblogs.com/lz1996/p/11566702.html