zoukankan      html  css  js  c++  java
  • 模块和文件

    模块和文件

    什么是模块
    模块支持从逻辑上组织python代码
    当代码量变得相当大的时候,最好把代码分成有组织的代码段
    代码片段之间相互有一定的联系,可能是一个包含数据的成员和方法的类,也可能是一组但彼此独立的操作函数
    这些代码片段是共享的,所以python允许‘调入’一个模块,允许使用其他模块的属性来利用之前的工作成果,实现代码重用

    模块文件
    说模块是按照逻辑来组织python代码的方法,文件是物理层上组织模块的方法
    一个文件被看作是一个独立模块,一个模块也可以被看作是一个文件
    模块的文件名就是模块名字加上扩展名.py

    名称空间
    名称空间就是一个从名称到对象的关系映射集合
    给定一个模块名之后,只可能有一个模块被导入到python的解释器中,所以在不同模块之间不会出现名称交叉现象
    每个模块都定义了它自己的唯一的名称空间



    导入模块

    搜索路径
    模块的导入需要一个叫“路径搜索”的过程
    python在文件系统“预定义区域”的查找要调用的模块
    搜索路径在sys.path中定义
    >>> import sys
    >>> print sys.path
    ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

    模块导入方法
    使用import导入模块
    可以在一行导入多个模块,但可读性会下降
    可以只导入模块的某些属性
    导入模块时,可以为模块取别名
    >>> import time ,os ,sys
    >>> from random import randint
    >>> import cPickle as p
    >>>

    导入和加载
    当导入模块时,模块的顶层代码会被执行
    一个模块不管被导入(import)多少次,只会被加载(load)一次

    从zip文件中导入

    在2.3版中,python加入了ZIP归档文件导入模块的功能
    如果搜索路径中存在一个包含python模块(.py .pyc 或.pyo文件)的.zip文件,导入时会把ZIP文件当作目录处理
    >>> import sys
    >>> sys.path.append('/root/pymodule.zip')
    >>> import foo  #导入pymodule.zip压缩文件中的foo模块

    目录结构
    包是一个有层次的文件目录结构,为平坦的名称空间加入有层次的组织结构
    允许程序员把有联系的模块组合到一起
    包目录下必须有一个__init__.py文件


    绝对导入

    包的使用越来越广泛,很多情况下导入子包会导致和真正标准库模块发生冲突
    因此,所有的导入现在被认为是绝对的,也就是说这些名字必须通过python路径(sys.path或 PYTHONPATH)来访问

    相对导入

    绝对导入特性使得程序员失去了import的自由,因此出现了相对导入
    以为import语句总是绝对导入,所以相对导入只应用于from-import语句


    内置模块


    hashlib模块
    hashlib用来替换md5和sha 模块,并使它们的API一致,专门提供hash算法

    包括md5 sha1 sha22 sha256 sha384 sha512,使用非常方便、简单
    >>> import hashlib
    >>> m = hashlib.md5()
    >>> m.update('hello world!')
    >>> m.hexdigest()
    'fc3ff98e8c6a0d3087d515c0473f8677'
    >>>


    tarfile模块
    tarfile模块允许创建、访问tar文件
    同时支持gzip、bzip2

  • 相关阅读:
    jQuery EasyUI API 中文文档 可调整尺寸
    jQuery EasyUI API 中文文档 链接按钮(LinkButton)
    jQuery EasyUI API 中文文档 手风琴(Accordion)
    jQuery EasyUI API 中文文档 表单(Form)
    jQuery EasyUI API 中文文档 组合(Combo)
    jQuery EasyUI API 中文文档 布局(Layout)
    jQuery EasyUI API 中文文档 拆分按钮(SplitButton)
    jQuery EasyUI API 中文文档 菜单按钮(MenuButton)
    jQuery EasyUI API 中文文档 搜索框
    jQuery EasyUI API 中文文档 验证框(ValidateBox)
  • 原文地址:https://www.cnblogs.com/ghming/p/8432737.html
Copyright © 2011-2022 走看看