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写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
Python入门篇之字典
Oct 17 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
python用plt画图时,cmp设置方法
Dec 13 Python
python数据归一化及三种方法详解
Aug 06 Python
python禁用键鼠与提权代码实例
Aug 16 Python
浅析python 定时拆分备份 nginx 日志的方法
Apr 27 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
Python新手如何理解循环加载模块
May 29 Python
Python-split()函数实例用法讲解
Dec 18 Python
Python实现简繁体转换
Jun 07 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的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
Python中基础的socket编程实战攻略
2016/06/01 Python
Python的语言类型(详解)
2017/06/24 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python常见工厂函数用法示例
2018/03/21 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
采购部岗位职责
2013/11/24 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
拉歌口号大全
2014/06/13 职场文书
法定授权委托证明书
2014/09/27 职场文书
工作经历证明范本
2015/06/15 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python