zoukankan      html  css  js  c++  java
  • 八、模块与包

    一、模块

    模块就是一系列功能的集合体,在Python中,一个py文件就是一个模块

    二、使用模块

    1、import导入模块

    首次导入模块发生三件事:

    1)、创建一个模块的名称空间

    2)、执行模块对应的文件,将产生的名字存放于1中的名称空间

    3)、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间

    之后的导入会直接引用第一次导入的结果,不会重复执行文件

    要调用模块名称空间中的名字,语法:

    模块名.模块名称空间中的名字

    为模块名起别名:

    import 模块名 as 别名

    2、from...import...导入模块

    发生三件事:

    1)、创建一个模块的名称空间

    2)、执行模块对应的文件,将产生的名字存放于1中的名称空间

    3)、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀

    3、模块的搜索路径

    模块的查找顺序是:内存中已经加载的模块---->内置模块----->sys.path路径中包含的模块

    sys.path的第一个路径是当前文件所在的文件夹

    4、__name__的值

    1)、在文件被执行的情况下,等于'__main__'

    2)、在文件被导入的情况下,等于模块名

    5、内置模块

    1)、logging模块:

    logging.debug()      调试,日志级别10

    logging.info()                     日志级别20

    logging.warning()    警告信息,日志级别30

    logging.error()         出错,日志级别40

    logging.critical()                 日志级别50

    logging.basicConfig()

    logger:负责产生日志

    filter:过滤日志(不常用)

    handler:控制日志打印到文件orvsdr

    formatter:控制日志的格式

    日志级别:两层关卡,只有都通过了,才能放行

    2)、json模块、pickle模块

    序列化:内存中的数据结构---->转成一种中间格式---->存到文件中

    即把对象(变量)从内存中变成可存储或传输的过程称之为序列化

    序列化可以:1、持久保存状态;2、跨平台数据交互

    json模块

    json.dump()    序列化,即对数据进行编码

    json.dump()    反序列化,即对数据进行解码

    pickle模块

    和json模块一样,pickle模块是byte类型

    3)、os模块

    os.path.dirname(path)              返回文件路径

    os.path.join(path1,path2...)      把目录和文件名合成一个路径

    os.path.exists(path)                  路径存在则返回True,路径损坏返回False

    os.path.isdir(path)                    判断路径是否为目录

    os.mkdir(path)                         生成单级目录

    os.listdir                                   列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

    软件开发目录规范

    把项目的根目录添加到环境变量中的格式模板:

    import os,sys

    BASE_DIR = os.path.dirname(os.path.dirname(__file__))

    sys.path.append(BASE_DIR)

    4)、time模块

    time.time()           时间戳

    time.strftime('')     格式化的字符串  

    time.localtime()    对象

    5)、datetime模块

    datetime.datetime.now() 

    6)、random模块

    7)、sys模块

    8)、shutil模块

    9)、shelve模块

    10)、xml模块

    11)、re模块

    正则表达式

    .*       贪婪匹配,代表匹配任意长度,任意的字符

    .*?     把贪婪匹配变成非贪婪匹配

    ()       分组

    []        匹配一个指定范围内的字符(这一个字符来自于括号内定义的)。当 - 需要被当作普通符号匹配时,只能放到  [] 最左边或最右边。 [] 内的 ^ 代表取反的意思

    括号内加 ?: 代表取匹配成功的所有内容,而不仅仅是括号内的内容

    12)、hashlib模块

    hash就是一种算法,该算法接收传入的内容,经过运算得到一串hash值

    特点:

    1、只要传入的内容一样,得到的hash值必然一样。可以文件完整性校验

    2、不能由hash值反解成内容。可以把密码做成hash值,不要用明文传输

    3、只要使用的hash值算法不变,无论校验的内容有多大,得到的hash值长度是固定的

    13)、密码加盐模块hmac

    hmac.new()

    14)、subprocess模块

    15)、configparser模块

    6、包

    模块的一种形式

    导入包的时候产生的三件事:

    1)、产生一个包的名称空间

    2)、执行包下的__init__.py文件,将产生的名字存放于包的名称空间中

    3)、在当前执行文件中拿到包的名字,该名字指向包的名称空间

    在导入带点的,点的左边必须都是包,这是导入包特有的语法

    包内模块之间的导入应该使用from...import...

    from...import...,import后必须是一个明确的名字,不能有任何前缀

    模块的相对导入和绝对导入,推荐绝对导入

  • 相关阅读:
    update jdk安装与配置
    Ubuntu 14.04 FTP服务器--vsftpd的安装和配置
    ubuntu 修改开机分辨率
    win7下通过easyBCD引导安装Ubuntu14.04
    IOS swift2.0 Get HTTP 数据请求
    oracle数据库中文汉字排序
    ORACLE日期函数大全!
    Oralce常用命令
    在linux环境下安装redis
    PHP常用函数大全
  • 原文地址:https://www.cnblogs.com/Python1/p/8931005.html
Copyright © 2011-2022 走看看