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 用户登录验证的小例子
Mar 06 Python
python实现哈希表
Feb 07 Python
python通过yield实现数组全排列的方法
Mar 18 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
pyenv命令管理多个Python版本
Mar 26 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
Django  ORM 练习题及答案
Jul 19 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 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读取der格式证书乱码解决方法
2015/06/22 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
php实现socket推送技术的示例
2017/12/20 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
详解参数传递四种形式
2015/07/21 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
学习Vue组件实例
2018/04/28 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
python定时器使用示例分享
2014/02/16 Python
python里对list中的整数求平均并排序
2014/09/12 Python
Python的Flask框架中web表单的教程
2015/04/20 Python
python计算牛顿迭代多项式实例分析
2015/05/07 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
python3图片文件批量重命名处理
2019/10/31 Python
基于python的列表list和集合set操作
2019/11/24 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
总经理秘书工作职责
2013/12/26 职场文书
师德个人剖析材料
2014/02/02 职场文书
教师求职自荐信
2015/03/26 职场文书
通知书大全
2015/04/27 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
vue elementUI表格控制对应列
2022/04/13 Vue.js