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操作MySQL简单实现方法
Jan 26 Python
在RedHat系Linux上部署Python的Celery框架的教程
Apr 07 Python
python构建自定义回调函数详解
Jun 20 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
Python使用getpass库读取密码的示例
Oct 10 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
Python中按值来获取指定的键
Mar 04 Python
Django多数据库的实现过程详解
Aug 01 Python
在pycharm中显示python画的图方法
Aug 31 Python
如何基于windows实现python定时爬虫
May 01 Python
python编写实现抽奖器
Sep 10 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容易忘记的知识点分享
2013/04/30 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
javascript实现的listview效果
2007/04/28 Javascript
use jscript List Installed Software
2007/06/11 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
jQuery动态添加
2016/04/07 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
深入理解node.js http模块
2018/01/24 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
文明礼貌演讲稿
2014/05/12 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
投标单位介绍信
2015/05/05 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
tree shaking对打包体积优化及作用
2022/07/07 Java/Android