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

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

(0)

相关推荐

  • Python中使用语句导入模块或包的机制研究

    这篇文章讨论了Python的from <module> import *和from <package> import *,它们怎么执行以及为什么使用这种语法(也许)是一个坏主意. 从一个模块导入全部 from <module> import * means意味着"我希望能访问<module>中我有权限访问的全部名称".例如以下代码something.py: # something.py public_variable = 42 _priv

  • python中安装模块包版本冲突问题的解决

    问题 最近在工作中遇到一个问题,在安装python软件包的时候,经常会遇类似这样一个问题.比如对于ipython,机子本身安装的版本是1.2.1,显然太低,不足以跑jupyter,尝试着用pip安装,却发现下载的过程一路畅通,但是安装的时候却总是会报这样一个错误. 错误提示如下: ......'Not uninstalling ipython at /usr/lib/python2.7/dist-packages, owned by OS'...... 最终显示了ipython已经成功安装,但是

  • Python中模块与包有相同名字的处理方法

    前言 在编程开发中,个人觉得,只要按照规范去做,很少会出问题.刚开始学习一门技术时,的确会遇到很多的坑.踩的坑多了,这是好事,会学到更多东西,也会越来越觉得按照规范做的重要性,规范的制定就是用来规避问题的.有时候确实应该听听有经验人的建议,不要一意孤行.这好像不是本文的重点,其实我重点是想表达,尽量按规范做事,这样会少走很多弯路. 我现在使用的主力编程语言是 Python,在接触 Python 至今,我感觉我踩的坑还是极少的,基本上没有遇到什么奇怪的问题.实际上,这并不是一件好事,不踩坑,很多躺

  • Python中的包和模块实例

    一.实例和结果 1)实例的结构和具体的文件: 复制代码 代码如下: PyPackage │  PyCommonM.py │  __init__.py │ ├─p1Package │      P1M.py │      P1MC.py │      __init__.py │ └─p2        P2.py        P2M.py 2)PyCommonM.py 复制代码 代码如下: def PyCommonMF():  print "PyCommonMF" 3) P1M.py:

  • Python中的模块和包概念介绍

    模块概述 如果说模块是按照逻辑来组织 Python 代码的方法, 那么文件便是物理层上组织模块的方法. 因此, **一个文件被看作是一个独立模块, 一个模块也可以被看作是一个文件. 模块的文件名就是模 块的名字加上扩展名 .py . 与其它可以导入类(class)的语言不同,在 Python 中你导入的是模块或模块属性**. 模块名称空间 一个名称空间就是一个名称到对象的关系映射. 导入模块 导入模块整体(import) 方式一 复制代码 代码如下: import module1 import

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

    Python语言功能非常强大,除了类之外,还有模块和包的概念,这有点像perl,此处简单说说包和模块. 一.Python中的模块 模块--其实就是我们说的库(lib)的概念,不过它不仅只是可以包含一系列函数,也可以包含类,python里是没有像C语言之类,直接include某文件的,包正是这种类似的东西. Python 引入模块的方法有两种: 1.import 模块名(实际是对应的就是 文件名.py ) 2.模块名 = __import__("模块文件名(不带扩展名)") 也可以&qu

  • Python入门之模块和包用法详解

    目录 模块 1. 导入模块的方式 2. 导入方式详解 3. 制作模块 4. 模块定位顺序 5. __all__ 包 1. 制作包 2. 导入包 总结 模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和 Python 语句 模块能定义函数,类和变量,模块里也能包含可执行的代码 1. 导入模块的方式 import 模块名 from 模块名 import 功能名 from 模块名 import * import 模块名 as 别名

  • python中安装Scrapy模块依赖包汇总

    本地虚拟环境开发完成之后,上线过程中需要一一安装依赖包,做个记录如下: CentOS 安装python3.5.3 wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz tar -xf Python-3.5.3.tgz cd Python-3.5.3 ./configure --prefix=/usr/local/python353 make & make install 完成安装python3.5.3,在不删除系统自带的pyt

  • Python引入多个模块及包的概念过程解析

    实际开发中,一个大型的项目往往需要使用成百上千的 Python 模块,如果将这些模块都堆放在一起,势必不好管理. 而且,使用模块可以有效避免变量名或函数名重名引发的冲突,但是如果模块名重复怎么办呢? 因此,Python提出了包(Package)的概念. 一.包的概念和基本使用 什么是包呢?简单理解,包就是文件夹,只不过在该文件夹下必须存在一个名为"__init__.py" 的文件. 每个包的目录下都必须建立一个 __init__.py 的模块,可以是一个空模块,可以写一些初始化代码,其

  • Python入门之模块与包

    模块指的是Python的程序文件(源文件),模块的文件名就是模块名加上.py,里面包含了Python对象定义和Python语句,模块包含了定义函数.类和执行代码等等.模块提高了代码的可维护性.模块提高了代码的可重用性.模块避免了函数名和变量名冲突. 在Python中,模块可以分为3类,内置标准模块.自定义模块.第三方模块 一.模块导入 1. import 语句: 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: 语法: import module1[, mo

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

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

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

    通常来说,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程序设计入门(3)数组的使用

    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程序设计入门(5)类的使用简介

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

  • Python基于Flask框架配置依赖包信息的项目迁移部署

    一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚拟环境中配置依赖包信息不同.如果重新迁移到一个新的虚拟环境后,又重新来一个一个的配置依赖包,那将会很浪费时间. 下面介绍一个简单易用的技巧,也是我自己在书本上看到的,以防每次配置需要翻阅书籍的麻烦,所以单自写一篇文章作记录,方便自己以后查看,也希望给其他学习的同学有点帮助. 完成项目相关代码编写后,

随机推荐