Python中包(package)的调用方式
一.什么是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 !
三.包中模块的调用

目录结构如上图所示,以下是其中各个文件中的代码。
以下是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

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

目录结构如上图所示,以下是其中各个文件中的代码。
1>.Log 包中的源代码
2>.calcuate 包中的源代码
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”的文件。
五.包的多级调用

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

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”的文件。
六.__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)的调用方式的更多相关文章
- python中的三种输入方式
python中的三种输入方式 python2.X python2.x中以下三个函数都支持: raw_input() input() sys.stdin.readline() raw_input( )将 ...
- 实验 7 : OpenDaylight 实验 —— Python 中的 REST API 调用
实验 7 : OpenDaylight 实验 -- Python 中的 REST API 调用 一.实验 目的 对 Python 调用 OpenDaylight 的 REST API 方法有初步了解. ...
- ## Python中的Package和Jupyter中import包问题
前言 关于python包的一些知识 Java中的package概念 我们知道在java中的import package概念, java中的包就是一个目录,里面包含着子目录,子目录套着子目录,当需要引入 ...
- python中包的语法
1.什么是包? 包是一种通过".模块名"来组织python模块名称空间的方式.我们穿件的每个文件夹都可以被称为包. 但是要注意, 在python2中规定. 包内必须存在__init ...
- python中包和模块的使用说明
python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用. 如果想 ...
- Python 中包/模块的 `import` 操作
版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...
- Python的包package的导入与被导入(包的类和方法的导入,__init__()怎么写)
包package的导入与被导入: 参考一下: https://blog.csdn.net/guowujun321/article/details/80764468 1.文件目录: | |-- A/ ...
- python中函数的定义,调用,全局变量,局部变量,函数的嵌套使用-初级篇
函数的基本概述 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,可以思考一下如果有某个功能的代码是在多个地方使用的是否可以只写一次?此时的代码该如何定义.先观察以下的案例: ...
- python类变量的分类和调用方式
#!/usr/bin/python # -*- coding: UTF-8 -*- # 父类 class JustCounter: ''' 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中 ...
随机推荐
- Hbase记录-HBase基本操作(一)
HBase创建表 可以使用命令创建一个表,在这里必须指定表名和列族名.在HBase shell中创建表的语法如下所示. create ‘<table name>’,’<column ...
- Forth 语言概要 - Forth: An underview
Forth 语言概要 - Forth: An underview 原作者 Peter Knaggs 原文标题< Forth: An underview > 译者: 未知 译文链接: htt ...
- qemu基本使用
1.qemu的安装 请参考家用路由器0day漏洞挖掘技术这本书 2.基本使用 qemu有主要如下两种运作模式: 用户模式(User Mode),亦称使用者模式.qemu能启动那些为不同中央处理器编译的 ...
- Tomcat 配置目录
TOMCAT 1.主目录下有bin,conf,lib,logs,temp,webapps,work 1.bin目录主要是用来存放tomcat的命令 2.conf目录主要是用来存放tomcat的一些配置 ...
- Java SE 之 DAO层接口设计思想
用图说话 好处 1.只需要定义好IBaseDao的接口方法,并只需要实现BaseDaoImpl的方法,而具体的业务类和业务类/接口的方法的基本方法(IBaseDao已定义的)并不需要再考虑实现. 2. ...
- vue单页应用中 返回列表记住上次滚动位置、keep-alive缓存之后更新列表数据 那点事
实践场景需求 产品列表中,滚动到一定位置的时候,点击查看产品信息,后退之后,需要回到原先的滚动位置,这是常见的需求 所有页面均在router-view中,暂时使用了keep-alive来缓存所有页面, ...
- Django开发笔记二
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- Cleaning up old NVIDIA driver files
原文地址:https://www.gameplayinside.com/optimize/cleaning-up-old-nvidia-driver-files-to-save-disk-space/ ...
- Android通讯:短信
Android通讯之短信功能实现: 使用android.telephony.SmsManager对象,可以发送短信和彩信.// 构造回调函数,短信发送结束后,会发出对应的Intent请求Intent ...