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搜索引擎实现原理和方法
Nov 27 Python
python实现员工管理系统
Jan 11 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
PyQt5每天必学之进度条效果
Apr 19 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
pybind11在Windows下的使用教程
Jul 04 Python
python opencv实现证件照换底功能
Aug 19 Python
python与mysql数据库交互的实现
Jan 06 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
Python读取二进制文件代码方法解析
Jun 22 Python
python定义具名元组实例操作
Feb 28 Python
python实现会员管理系统
Mar 18 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
给多个地址发邮件的类
2006/10/09 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
python-numpy-指数分布实例详解
2019/12/07 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Python使用Matlab命令过程解析
2020/06/04 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
Java如何调用外部Exe程序
2015/07/04 面试题
机关办公室岗位职责
2014/04/16 职场文书
就职演讲稿范文
2014/05/19 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
辩护词格式
2015/05/22 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android