博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python全栈开发 * 31知识点汇总 * 180716
阅读量:6490 次
发布时间:2019-06-24

本文共 2368 字,大约阅读时间需要 7 分钟。

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__和*

转载于:https://www.cnblogs.com/J-7-H-2-F-7/p/9326486.html

你可能感兴趣的文章
【好程序员笔记分享】C语言之for语句使用注意
查看>>
理解数据库索引
查看>>
实习流水账(1)
查看>>
个人作业-Alpha项目测试
查看>>
xml文件读取后绑定到gridview
查看>>
fastjson的简单学习
查看>>
StringUtils中的常用的方法
查看>>
薪酬福利结构图
查看>>
EDM营销学堂:高效提升营销邮件点击率的技巧
查看>>
Java中的性能优化应该注意的一个细节
查看>>
mysql系列之-replication复制
查看>>
常使Linux快捷键提高工作效率
查看>>
抓取oschina上面的代码分享python块区下的 标题和对应URL
查看>>
添加国内yum源
查看>>
UNIX/Linux 系统管理技术手册阅读(四)
查看>>
软件项目经理新手上路14 - 你知道的太多了 - 无责任评项目管理
查看>>
我的友情链接
查看>>
hive2solr multivalue功能实现
查看>>
ORACLE 11G静默安装配置分解
查看>>
为什么大家不相信国产虚拟化技术?
查看>>