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 相关文章推荐
wxpython 学习笔记 第一天
Feb 09 Python
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
举例详解Python中的split()函数的使用方法
Apr 07 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 Python
最大K个数问题的Python版解法总结
Jun 16 Python
Django 实现下载文件功能的示例
Mar 06 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
python使用多进程的实例详解
Sep 19 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
学习Django知识点分享
Sep 11 Python
Python对接 xray 和微信实现自动告警
Sep 17 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
Http 1.1 Etag 与 Last-Modified提高php效率
2008/01/10 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
python3.7.0的安装步骤
2018/08/27 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
省优秀教师事迹材料
2014/01/30 职场文书
商务日语专业自荐信
2014/04/17 职场文书
2014年纪检工作总结
2014/11/12 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
学风建设主题班会
2015/08/17 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android
基于Python实现nc批量转tif格式
2022/08/14 Python