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 相关文章推荐
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
python对excel文档去重及求和的实例
Apr 18 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
用python做游戏的细节详解
Jun 25 Python
Django文件存储 默认存储系统解析
Aug 02 Python
Python中sys模块功能与用法实例详解
Feb 26 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
python 使用cycle构造无限循环迭代器
Dec 02 Python
Python创建自己的加密货币的示例
Mar 01 Python
在python中读取和写入CSV文件详情
Jun 28 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
YB217、YB235、YB400浅听
2021/03/02 无线电
JAVA/JSP学习系列之七
2006/10/09 PHP
我的论坛源代码(四)
2006/10/09 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python快速从注释生成文档的方法
2016/12/26 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python中单下划线_的常见用法总结
2018/07/10 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
python轮询机制控制led实例
2020/05/03 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
python实现学生信息管理系统源码
2021/02/22 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
毕业生求职简历中的自我评价
2013/10/18 职场文书
python基础之while循环语句的使用
2021/04/20 Python