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中集合类型(set)学习小结
Jan 28 Python
Python中super()函数简介及用法分享
Jul 11 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
Python timeit模块的使用实践
Jan 13 Python
使用python计算三角形的斜边例子
Apr 15 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
python爬虫调度器用法及实例代码
Nov 30 Python
python 基于selectors库实现文件上传与下载
Dec 31 Python
Pandas数据结构之Series的使用
Mar 31 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中邮箱地址正则表达式实现与详解
2012/04/24 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
json 实例详细说明教程
2009/10/31 Javascript
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
Angular路由简单学习
2016/12/26 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
原生js实现日历效果
2020/03/02 Javascript
react 生命周期实例分析
2020/05/18 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
Python subprocess模块学习总结
2014/03/13 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python数据化运营的重要意义
2019/11/25 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
在keras里实现自定义上采样层
2020/06/28 Python
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
总裁办公室主任职责
2014/01/02 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
运动会加油稿100字
2014/09/19 职场文书
2015年副班长工作总结
2015/05/15 职场文书
初中政治教学工作总结
2015/08/13 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript