包的补充

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 创建目录代码

创建目录结构

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 目录结构

目录结构

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 绝对导入

绝对导入

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 相对导入

相对导入

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

Python之模块和包补充的更多相关文章

  1. Python之模块和包导入

    Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...

  2. 一文搞懂 Python 的模块和包,在实战中的最佳实践

    最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...

  3. Python 基金会 —— 模块和包简介

    一.模块(Module) 1.模块的作用      在交互模式下输出的变量和函数定义,一旦终端重新启动后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Modul ...

  4. day21 python之模块和包

    一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...

  5. 《Python》模块和包

    一.模块 1.什么是模块: 一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编写的代码(. ...

  6. python 深入模块和包

    模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...

  7. (Python )模块、包

    本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...

  8. python基础-------模块与包(一)

    模块与包 Python中的py文件我们拿来调用的为之模块:主要有内置模块(Python解释器自带),第三方模块(别的开发者开发的),自定义模块. 目前我们学习的是内置模块与第三方模块. 通过impor ...

  9. python中模块,包,库的概念

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

随机推荐

  1. STM32Cube填坑,ST link 下载一次以后无法下载

    ST link 下载一次以后无法下载, 原因是工程设置忘记设置Debug模式

  2. 连接Xshell

    连xshell之前先进入[root@localhost zxj]# vim /etc/ssh/sshd_config, 将115行删除注释改为UseDNS  no, 保存重启sshd(xshell)的 ...

  3. CSS3 —— 盒子模型

    盒子模型 主要的属性就5个:width.height.padding.border.margin.如下:  width和height:内容的宽度.高度(不是盒子的宽度.高度). padding:内边距 ...

  4. P2085 最小函数值

    题目链接hhh:https://www.luogu.org/problemnew/show/P2085好嘛,运气真好,刚A掉序列合并,正好碰到这题,可以说是序列合并的升级版了 那么简单说一下思路,首先 ...

  5. 从MAP角度理解神经网络训练过程中的正则化

    在前面的文章中,已经介绍了从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化,本次我们从最大后验概率点估计(MAP,maximum a posteriori point estimate)的 ...

  6. 去掉有序数组中的重复元素 c/c++

    去掉有序数组中的重复元素: int RemoveDuplates(int A[], int nCnt) { ; ; , j = ; i < nCnt && j < nCnt ...

  7. TP5报错Fatal error: require(): Failed opening required '/home/www/xx/public/../thinkphp/start.php

    https://jingyan.baidu.com/article/afd8f4deb784fe34e386e97b.html https://www.cnblogs.com/300js/p/9224 ...

  8. seata demo

    0. 介绍 2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开源分布式事务解决方案.Fes ...

  9. ftp读取图片并转Base64

    public String download(String ftpUrl,String sfzh){ FTPClient ftpClient = new FTPClient(); InputStrea ...

  10. P5596 洛谷月赛 题 题解

    因为a>=0,b>=0,所以y^2-x^2>=0,所以y>x,因为都是自然数设y=x+k,化简得x=b-k^2/2*k-a;可知x仅当b-k^2%2*k-a==0且b-k^2与 ...