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编写简单网络爬虫抓取视频下载资源
Nov 04 Python
Python实现遍历数据库并获取key的值
May 17 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
利用python解决mysql视图导入导出依赖的问题
Dec 17 Python
python实现决策树
Dec 21 Python
用Python实现KNN分类算法
Dec 22 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
Python之修改图片像素值的方法
Jul 03 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
Python通过len函数返回对象长度
Oct 22 Python
Python的三个重要函数详解
Jan 18 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
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
Python去除列表中重复元素的方法
2015/03/20 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
会计系毕业个人自荐信格式
2013/09/23 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
高一语文教学反思
2016/02/16 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python