Python程序设计入门(4)模块和包


Posted in Python onJune 16, 2014

Python语言功能非常强大,除了类之外,还有模块和包的概念,这有点像perl,此处简单说说包和模块。

一、Python中的模块

模块——其实就是我们说的库(lib)的概念,不过它不仅只是可以包含一系列函数,也可以包含类,python里是没有像C语言之类,直接include某文件的,包正是这种类似的东西。

Python 引入模块的方法有两种:

1、import 模块名(实际是对应的就是 文件名.py )

2、模块名 = __import__("模块文件名(不带扩展名)")

也可以" import 模块名  as  别名 "这样用

例如:

test.py
# -*- coding: gb18030 -*-
#引入模块
import test_mod
#调用模块里的函数
test_mod.my_func()
#调用模块里的类
tc = test_mod.test_cls()
tc.test_func()
test_mod.py源码如下:
# -*- coding: gb18030 -*-
def my_func():
    print 'I am a function in the module! '
class test_cls:
    def test_func(self):
        print 'I am a mothod in the class! '

调用模块里的函数或类一定要用 “模块名.类名|函数名” 的方式。

正是因为这种特性,python里很多 os.xx 、 sys.xx 之类的语法,但它不一定是对象(对象和非对象之间显得极混乱,或者可以认为模块也是一个对象吧,只是比较特殊),这是python语言的一个严重的缺点,不过当你习惯这些的时候,就比较容易读懂python的脚本了。

sys 和 os 是 python 里最常用的模块,需要了解一下它们。

二、Python中的包

包实际上就是对一系列模块的封装,以防止模块名之间发生冲突,对于一个标准的python程序,通常的结构为:

app.py
    appname
        __init__.py
        son_pack1
            __init__.py
            son_mod_1_1.py
            son_mod_1_2.py
         son_pack2
            __init__.py
            son_mod_2_1.py
            son_mod_2_2.py
        son_mod_1.py
        .......

如果学过Java就会明显,这是一种按目录来查找文件的方法,不过不同之处是每个目录必须带 __init__.py 否则将不会被识别为包的子目录。

在有__version__、__all__、__path__ 三个特殊变量,可以指定,也可以让这文件为空。

调用包里的类或函数的方法是:

包名.子包名.类名|函数名 

这实际上就相当于C++或C#里的名字空间。

在调用包时,需要注册目录和具体模块的调用方法

如,要调用 son_mod_1_1.py

那么就是:

appname.son_pack1.son_mod_1_1

此外还有一种方法是用  form 关键字,方法为:

from appname.son_pack1 import son_mod_1_1

如果要喜引入 appname.son_pack1 里的所有模块,那么为:

from appname.son_pack1 import *

对于使用 import * 的情况,必须在 __init__.py 中用 __all__ 指明,如:

__all__ = ["son_mod_1_1", "son_mod_1_2"]

Python 相关文章推荐
Python实例之wxpython中Frame使用方法
Jun 09 Python
python根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
python 接口测试response返回数据对比的方法
Feb 11 Python
python实现五子棋人机对战游戏
Mar 25 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
python实现按关键字筛选日志文件
Dec 24 Python
Python tkinter模版代码实例
Feb 05 Python
python时间日期操作方法实例小结
Feb 06 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
Python程序设计入门(3)数组的使用
Jun 16 #Python
Python程序设计入门(2)变量类型简介
Jun 16 #Python
Python程序设计入门(1)基本语法简介
Jun 13 #Python
Python对两个有序列表进行合并和排序的例子
Jun 13 #Python
用Python输出一个杨辉三角的例子
Jun 13 #Python
Python 的 with 语句详解
Jun 13 #Python
python学习笔记:字典的使用示例详解
Jun 13 #Python
You might like
NT IIS下用ODBC连接数据库
2006/10/09 PHP
php注销代码(session注销)
2012/05/31 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
百度地图api如何使用
2015/08/03 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
python装饰器使用方法实例
2013/11/21 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Python语言快速上手学习方法
2018/12/14 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
销售演讲稿范文
2014/01/08 职场文书
《穷人》教学反思
2014/04/08 职场文书
护士感人事迹
2014/05/01 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python
bat批处理之字符串操作的实现
2022/03/16 Python
Go 中的空白标识符下划线
2022/03/25 Golang