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 文件操作实现代码
Oct 07 Python
python分割和拼接字符串
Nov 01 Python
python迭代器的使用方法实例
Nov 21 Python
Python及PyCharm下载与安装教程
Nov 18 Python
使用Flask集成bootstrap的方法
Jul 24 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 23 Python
解决python存数据库速度太慢的问题
Apr 23 Python
Python Pandas解析读写 CSV 文件
Apr 11 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时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
checkbox使用示例
2013/08/23 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
js实现消息滚动效果
2017/01/18 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
python提取内容关键词的方法
2015/03/16 Python
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
python自动发送邮件脚本
2018/06/20 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
django框架中间件原理与用法详解
2019/12/10 Python
Django REST framwork的权限验证实例
2020/04/02 Python
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
书法比赛获奖感言
2014/02/10 职场文书
机关节能减排实施方案
2014/03/17 职场文书
婚宴父亲致辞
2015/07/27 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记