Python程序设计入门(4)模块和包_python

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"]

时间: 2024-10-23 23:29:15

Python程序设计入门(4)模块和包_python的相关文章

Python程序设计入门(2)变量类型简介_python

通常来说,Python的变量/数据类型非常多,但是它是不需要用户指定的,因为有些是根据部份系统函数生成,另外一些是自动根据变量的值识别的,这些数据类型常量在class types定义,所以使用时需要 import types如: 复制代码 代码如下: import typesa = [1,2,3]if type(a) is types.ListType:    print aelse:    print 'not list' Python的具体变量/数据类型如下: NoneType None 类

Python程序设计入门(1)基本语法简介_python

Python是当今日趋流行的一种脚本语言,它比Java更简单,比php更强大,并且还适用于做桌面应用的开发,在ubuntu中,更加是必须的一种脚本引擎,所以有必要去学习一下,这里的文章只针对有一定编程基础,最好是比较熟悉php或javascript的用户,如果没任何基础的新手建议找更详细的教程去学习. Python的变量是不需要定义的,这方面和php一样,它比javascript还是宽松,不过它是用缩进作为段落标识的,作为习惯了C语言风格语法的人,可能一开始会很不习惯使用,但细一想,其实也是很正

Python程序设计入门(3)数组的使用_python

1.Python的数组可分为三种类型: (1) list 普通的链表,初始化后可以通过特定方法动态增加元素.定义方式:arr = [元素] (2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的.定义方式:arr = (元素) (2) Dictionary 词典类型, 即是Hash数组.定义方式:arr = {元素k:v} 2.下面具体说明这些数组的使用方法和技巧: (1) list 链表数组 a.定义时初始化 复制代码 代码如下: a = [1,2,[1,2,3]] b.定义时不

python根据路径导入模块的方法_python

本文实例讲述了python根据路径导入模块的方法,分享给大家供大家参考.具体方法如下: 常规做法如下: import sys sys.path.append('C:/full/path') from foo import util,bar 而要直接通过路径 import imp util = imp.load_source('util', 'C:/full/path/foo/util.py') 使用时使用util.method,此时并没有定义method method = util.method

Python程序设计入门(5)类的使用简介_python

一.类的定义和使用 python定义一个类的基本语法是: 复制代码 代码如下: class classname([基类一,基类二...]):     [def __init__(self, [agv1,agv2...]):]  # 定义构造函数     def method1(self, [agv1,agv2...]):  # 成员函数     使用时用: 对象实例名 = 类名(参数列表) 对象实例名.成员函数名(参数列表) 和其它语言不同之处是: (1) python没有new关键字(2) 成

在Python中使用第三方模块的教程_python

在Python中,安装第三方模块,是通过setuptools这个工具完成的.Python有两个封装了setuptools的包管理工具:easy_install和pip.目前官方推荐使用pip. 如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了. 如果你正在使用Windows,请参考安装Python一节的内容,确保安装时勾选了pip和Add python.exe to Path. 在命令提示符窗口下尝试运行pip,如果Windows提示未找到命令,可以重新运行安装程序添加pip

python持久性管理pickle模块详细介绍_python

持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让您更深一步地了解Python 的对象序列化能力.什么是持久性? 持 久性的基本思想很简单.假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项).换句话说,您希望将对象存储在磁盘上,便于 以后检索.这就是持久性.要达到这个目的

Python 正则表达式入门(初级篇)_python

引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些匹配某个模式的文本. 许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初

python的正则表达式re模块的常用方法_python

1.re的简介 使用python的re模块,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息.python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配. 复制代码 代码如下: import re print re.__doc__ 可以查询re模块的功能信息,下面会结合几个例子说明. 2.re的正则表达式语法 正则表达式语法表如下: 语法 意义 说明 "." 任意字符 "^" 字符串开始