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 14 Python
Python同时向控制台和文件输出日志logging的方法
May 26 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
Python 基础之字符串string详解及实例
Apr 01 Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
django 实现电子支付功能的示例代码
Jul 25 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
Python异步编程之协程任务的调度操作实例分析
Feb 01 Python
Python如何使用ConfigParser读取配置文件
Nov 12 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
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
jquery动态添加option示例
2013/12/30 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
Django实现图片文字同时提交的方法
2015/05/26 Python
详解Python3中yield生成器的用法
2015/08/20 Python
python实现对输入的密文加密
2019/03/20 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
一些Unix笔试题和面试题
2013/01/22 面试题
运动会表扬稿大全
2014/01/16 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
预防煤气中毒方案
2014/06/16 职场文书
公司活动总结范文
2014/07/01 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
公民授权委托书范本
2014/09/17 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
党员活动总结
2015/02/04 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫