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 dict remove数组删除(del,pop)
Mar 24 Python
Python正则表达式匹配ip地址实例
Oct 09 Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
对Python subprocess.Popen子进程管道阻塞详解
Oct 29 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
python按比例随机切分数据的实现
Jul 11 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
python实现静态服务器
Sep 05 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 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实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
vue多次循环操作示例
2019/02/08 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
Python科学计算之Pandas详解
2017/01/15 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
学校师德承诺书
2014/05/23 职场文书
倡议书格式
2014/08/30 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
DIY胆机必读:各国电子管评价
2022/04/06 无线电