一.什么是Python Package

  如何区分你看到的目录是一个Python Package包呢?其实很简单,你只要看这个名录下是否有“__init__.py”这个文件就好了,如果有那么就是Python Package包,如果没有,就说嘛你看到的就是个普通的目录,如下图,你就可以看出来"calcuate"和"Log"就是一个Python Package包,而"yinzhengjie"就是一个目录,而判断的依据就是是否包含_init__.py文件。"yinzhengjie"这个目录下包含三个文件,即“calcuate”,“Log”和“bin.py"文件。

二.主程序调用包中的模块

  目录结构如上图所示,以下是其中各个文件中的代码。

 sc_cal
 1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 #@author :yinzhengjie
4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:y1053419035@qq.com
6
7 import logging as log
8
9 def GetLogger():
10 logger = log.getLogger()
11
12 fh = log.FileHandler("log.txt")
13
14 logger.addHandler(fh)
15
16 return logger

  以下是bin主程序的代码。

 1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 #@author :yinzhengjie
4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:y1053419035@qq.com
6
7 from Log import logger
8
9 from calcuate import sc_cal
10
11 obj = logger.GetLogger()
12
13 obj.error("This yinzhengjie's test error !")
14
15 s1 = sc_cal.Add(100,200)
16
17 print(s1)
18
19
20
21 #以上代码执行结果如下:
22 300

  执行主程序代码之后,会在执行的目录中生成一个名称为“log.txt”的文件。

1 This yinzhengjie's test error !

三.包中模块的调用

  目录结构如上图所示,以下是其中各个文件中的代码。

dome
logger

  以下是bin主程序的代码。

 1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 #@author :yinzhengjie
4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:y1053419035@qq.com
6
7 from Log import logger
8
9 from calcuate import sc_cal
10
11 obj = logger.GetLogger()
12
13 obj.error("This yinzhengjie's test error !")
14
15 s1 = sc_cal.Add(100,200)
16
17 print(s1)
18
19
20
21
22 #以上代码执行结果如下:
23 30
24 300
log.txt

四.同级目录下的被调用模块之间的相互调用

  目录结构如上图所示,以下是其中各个文件中的代码。

1>.Log 包中的源代码

dome
logger

2>.calcuate 包中的源代码

sc_cal

3>.bin 包中的源代码

 1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 #@author :yinzhengjie
4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:y1053419035@qq.com
6
7 import os,sys
8
9
10 AbsolutePath = os.path.abspath(__file__) #将相对路径转换成绝对路径
11
12 SuperiorCatalogue = os.path.dirname(AbsolutePath) #相对路径的上级路径
13
14 BaseDir = os.path.dirname(SuperiorCatalogue) #在“SuperiorCatalogue”的基础上在脱掉一层路径,得到我们想要的路径。
15
16 sys.path.insert(0,BaseDir) #将我们取出来的路径加入到Python的命名空间去,并将该目录插入在第一个位置中。
17
18 from Log import logger
19
20 from calcuate import sc_cal
21
22
23 obj = logger.GetLogger()
24
25 obj.error("This yinzhengjie's test error !")
26
27 s1 = sc_cal.Add(100,200)
28
29 print(s1)
30
31
32
33 #以上代码执行结果如下:
34 30
35 300

  执行主程序代码之后,会在执行的目录中生成一个名称为“log.txt”的文件。

log.txt

五.包的多级调用

  目录结构如上图所示,以下是其中各个文件中的代码。

 1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 #@author :yinzhengjie
4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:y1053419035@qq.com
6
7 import logging as log
8
9
10 def GetLogger():
11 logger = log.getLogger()
12
13 fh = log.FileHandler("log.txt")
14
15 logger.addHandler(fh)
16
17 return logger

  主程序代码如下:

 1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 #@author :yinzhengjie
4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:y1053419035@qq.com
6
7
8 from Log.Loger import logger as log
9
10 obj = log.GetLogger()
11
12 obj.error("This yinzhengjie's test error !")

  执行主程序代码之后,会在执行的目录中生成一个名称为“log.txt”的文件。

log.txt

六.__name__的应用

 1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 #@author :yinzhengjie
4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:y1053419035@qq.com
6
7 print("This is Test Page !")
8
9 def foo():
10 print("ok")
11
12
13
14 if __name__=="__main__": # 推荐使用这种方式调试代码,只有执行当前模块的人才会执行以下代码,如果是别人调用该模块,以下的代码是不会被执行的!
15 foo()
16
17 print(__name__)
18
19
20
21
22
23
24 #以上代码执行结果如下:
25 This is Test Page !
26 ok
27 __main__
 1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 #@author :yinzhengjie
4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:y1053419035@qq.com
6
7
8 import name
9
10
11
12 #以上代码执行结果如下:
13 This is Test Page !
14 name

Python中包(package)的调用方式的更多相关文章

  1. python中的三种输入方式

    python中的三种输入方式 python2.X python2.x中以下三个函数都支持: raw_input() input() sys.stdin.readline() raw_input( )将 ...

  2. 实验 7 : OpenDaylight 实验 —— Python 中的 REST API 调用

    实验 7 : OpenDaylight 实验 -- Python 中的 REST API 调用 一.实验 目的 对 Python 调用 OpenDaylight 的 REST API 方法有初步了解. ...

  3. ## Python中的Package和Jupyter中import包问题

    前言 关于python包的一些知识 Java中的package概念 我们知道在java中的import package概念, java中的包就是一个目录,里面包含着子目录,子目录套着子目录,当需要引入 ...

  4. python中包的语法

    1.什么是包? 包是一种通过".模块名"来组织python模块名称空间的方式.我们穿件的每个文件夹都可以被称为包. 但是要注意, 在python2中规定. 包内必须存在__init ...

  5. python中包和模块的使用说明

    python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用. 如果想 ...

  6. Python 中包/模块的 `import` 操作

    版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...

  7. Python的包package的导入与被导入(包的类和方法的导入,__init__()怎么写)

    包package的导入与被导入: 参考一下: https://blog.csdn.net/guowujun321/article/details/80764468 1.文件目录: | |--  A/ ...

  8. python中函数的定义,调用,全局变量,局部变量,函数的嵌套使用-初级篇

    函数的基本概述 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,可以思考一下如果有某个功能的代码是在多个地方使用的是否可以只写一次?此时的代码该如何定义.先观察以下的案例: ...

  9. python类变量的分类和调用方式

    #!/usr/bin/python # -*- coding: UTF-8 -*- # 父类 class JustCounter: ''' 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中 ...

随机推荐

  1. postgresql 随机函数

    随机函数 --function to get random number============================================================= -- ...

  2. 微信现金红包 python

    微信现金红包发送接口,好像没法限制一个用户一个活动只能领取一次红包,在调用红包接口上,自己做了限制 REDPACK_RECORD 建表sql -- Create table create table ...

  3. Hibernate_day03

    一.今天内容 0 列表功能实现 1 表与表之间关系回顾 (1)一对多(客户和联系人) (2)多对多(用户和角色) 2 hibernate一对多操作 (1)一对多映射配置 (2)一对多级联保存 (3)一 ...

  4. 20155332 2016-2017-2 《Java程序设计》第7周学习总结

    20155332 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 了解Lambda语法 了解方法引用 了解Fucntional与Stream API 掌握Da ...

  5. MFC中添加了一个dialog,并创建了相应的类,初始化函数没有怎么办?

    1.在头文件中添加  virtual BOOL OnInitDialog();2.在对于的CPP文件中添加  BOOL CXXDlg::OnInitDialog()  {      return TR ...

  6. POJ1679 The Unique MST【次小生成树】

    题意: 判断最小生成树是否唯一. 思路: 首先求出最小生成树,记录现在这个最小生成树上所有的边,然后通过取消其中一条边,找到这两点上其他的边形成一棵新的生成树,求其权值,通过枚举所有可能,通过这些权值 ...

  7. 【文件】java生成PDF文件

    package test; import java.awt.Color; import java.io.FileOutputStream; import org.junit.Test; import ...

  8. ubuntu下安装搜狗输入法以及出现不能输入中文的解决办法

    1. 官网下载安装包 http://pinyin.sogou.com/linux/?r=pinyin 下载你需要的版本,这里选择64位版. 2. 进入软件中心安装 3. 修改ibus为fcitx im ...

  9. 【转】Windows下安装python2和python3双版本

    [转]Windows下安装python2和python3双版本 现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里 ...

  10. linux 同步IO: sync、fsync与fdatasync、sys_sync【转】

    本文转自:http://blog.csdn.net/cywosp/article/details/8767327 和 http://www.2cto.com/os/201204/126687.html ...