• 模块和文件


    模块和文件

    什么是模块
    模块支持从逻辑上组织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

  • 相关阅读:
    java—连连看-实现封装
    java—连连看GUI
    连连看--产生随机数
    勇者斗恶龙
    在ctex环境下利用Metapost作图
    [leetcode] Binary Tree Postorder Traversal
    [leetcode] Binary Tree Maximum Path Sum
    [leetcode] Binary Tree Level Order Traversal II
    [leetcode] Binary Tree Level Order Traversal
    [leetcode] Binary Tree Inorder Traversal
  • 原文地址:https://www.cnblogs.com/ghming/p/8432737.html
Copyright © 2020-2023  润新知