• python全栈开发 * 31知识点汇总 * 180716


    31 模块和包
    一.模块
    (一)模块的种类:内置模块,自定义模块,扩展模块第三方模块
    (二)自定义模块
    1.模块的创建 : 新建一个py文件.
    2.模块名 : 模块名需要符合变量的命名规范.
    3.模块的导入 import: (注意:导入模块时,python报错提示不可靠;import空格 文件名 不带.py.)
    (1).导入过程做了什么事?
    相当于执行了一个被导入的py文件
    (2).会重复导入吗?
    不会,所有被导入的模块都会存在sys.modules中,这个字典中的key是这个模块的名字,value是模块的内存地址
    (3).导入后可以直接使用这个模块中的函数和变量, 模块名.函数或变量名
    每一个模块的导入都会创建一个属于自己的命名空间.
    (4).导入模块时发生了什么?
    创建一个属于这个模块的命名空间;
    执行这个模块中的代码;
    创建一个引用来调用这个模块命名空间中的名字;
    将这个模块的的内存地址存储在sys.modules中.
    (5)为模块起别名.
    import 模块名 as m
    以上操作为导入模块重命名,重命名后新的名字会存储在内存空间中,作为模块的引用,但原模块名不能在文件中使用.
    使用情况有两种:
    a: 模块名较长时可以使用,节省代码,增强可读性.
    b: 两个模块提供的功能相同.
    序列化json pickle
    你提供序列化功能,帮助用户对***进行序列化
    def dump(somthing,m = 'json'):
    if m == 'json':
    import json as m
    else:
    import pickle as m
    m.dumps(somthing)
    数据库
    oracle oracle_db
    mysql mysql_db
    if db_name=="mysql":
    import mysql_db as db
    elif db_name=="oracle":
    import oracle_bd as db
    db.connect()
    db.exec()
    (6)导入多个模块
    导入的模块都写在文件的最开始;
    导入顺序:先导入内置模块,再导入扩展模块,最后导入自定义模块;
    格式:分开写,导入的各模块中间空一行;
    另一种写法: 写一行:import os,sys,flash
    重命名:import os as o,sys as s,flask as f
    4.导入模块 from 模块名 import变量名(方法名)
    没被导入的其它名字不能用了
    (1)导入过程中发生什么事:
    执行整个被导入的模块;
    (2) 创建一个命名空间 ,并把模块中的所有名字都存在命名空间中;
    (3)导入后, 使用模块中的名字不需要用 模块名.函数名或变量名 ,
    而是导入什么名字就能用什么名字 没有导入的名字不能用.
    (4)导入多个名字
    from 模块名 import 变量名,变量名 ( 写一行)
    from 模块名 import 变量名
    from 模块名 import 变量名 (分开写)
    (5)重命名
    from 模块名 import 变量名 as s ,变量名 as m
    (6)* 和__all__
    from 模块名 import * (* 导入全部变量名 一般不用)
    (7)情况分析
    如果模块中有20个方法,只用一个,用from 模块名import 方法名;
    如果模块中有20个方法,用十个,用import方法;
    import* 不定义__all__,*可以导入模块中的所有名字,,如果有__all__=[ 变量名,变量名] *只可以导入出现在__all__列表中的变量名.


    (三)模块的循环作用 (互相引用)==>直接报错
    1.依赖倒置原则: 高层不应该依赖低层模块.
    2.a引用b,b是a的高层.

    (四)模块的加载与修改
    1.模块一旦引入并加载完,再改导入模块中的内容,当前文件中不会改变还是用原值.
    2.如果想改,import importlib (内置模块)
    import importlib
    importlib.reload(模块名) 使修改生效
    (五)把模块当做脚本来执行

    (六)模块的搜索路径
    二.包
    (一)导入模块
    (二)导入包
    (三)绝对导入
    (四)相对导入
    (五)__all__和*
  • 相关阅读:
    Shell编程进阶 2.2 shell数组
    Shell编程进阶 2.1 shell函数
    win7将 esc与 capslock 互换
    Vimium 快捷键记录
    mysql-server 的一些记录
    2003服务器断开rdp后会自动注销。
    CentOS云服务器数据盘分区和格式化
    autoproxy 规则
    理解MySQL——索引与优化
    Spinnaker简介
  • 原文地址:https://www.cnblogs.com/J-7-H-2-F-7/p/9326486.html
Copyright © 2020-2023  润新知