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使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
Python贪心算法实例小结
Apr 22 Python
python使用多进程的实例详解
Sep 19 Python
pandas ix &iloc &loc的区别
Jan 10 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
python监控nginx端口和进程状态
Sep 06 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
calendar在python3时间中常用函数举例详解
Nov 18 Python
Python实现对word文档添加密码去除密码的示例代码
Dec 29 Python
python爬虫selenium模块详解
Mar 30 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
python实现同时给多个变量赋值的方法
2015/04/30 Python
Python字符串详细介绍
2015/05/09 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
python 实现绘制整齐的表格
2019/11/18 Python
Python列表list操作相关知识小结
2020/01/29 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
Python Http请求json解析库用法解析
2020/11/28 Python
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
人事主管岗位职责范本
2013/12/04 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
Nginx配置https的实现
2021/11/27 Servers
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL