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

python全栈开发 * 31知识点汇总 * 180716的更多相关文章

  1. python全栈开发 * 10知识点汇总 * 180612

    10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...

  2. python全栈开发 * 01知识点汇总 * 180530

    一 python简介. 1.创始人:  吉多 .范罗苏姆  \   (Guido van Rossum). 2.时间  :  1989年. 3.主要应用领域  :  云计算 \  WEB开发  \   ...

  3. python全栈开发 * 32知识点汇总 * 180717

    32 网络编程 (一)一.架构 定义:程序员开发的一种模式. 分类: C/S 架构 C/S即:Client与Server , 客户端/ 服务器模式 . 缺点 : 冗余 B/S 架构 Browser与S ...

  4. python全栈开发 * 27知识点汇总 * 180710

    27   time  os  sys  模块 time 模块 一.表示时间的三种方式 时间戳(timestamp), 元组(struct_time),格式化时间字符串(Format string) 小 ...

  5. python全栈开发 * 26知识点汇总 * 180709

    26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...

  6. python全栈开发 * 14 知识点汇总 * 180530

    14 生成器表达式 内置函数# 一.迭代器 (补充)# 1.如何判断迭代对象,迭代器# (1).dir(obj)检测对象有没有iter方法,然后it=obj.__iter__() 获取迭代器 , it ...

  7. python全栈开发 * 12 知识点汇总 * 180530

    12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...

  8. python全栈开发 * 36知识点汇总 * 180721

    36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...

  9. python全栈开发 * 24 知识点汇总 * 180705

    24 模块-------序列化一.什么是模块 模块:py文件就是一个模块.二.模块的分类:(1)内置模块 (登录模块,时间模块,sys模块,os模块)(2)扩展模块 (itchat 微信有关,爬虫,b ...

随机推荐

  1. Google Guava Stopwatch(计时器)

    Stopwatch stopwatch =newStopwatch().start(); //do something test for(int i =0; i <10000; i++){ } ...

  2. 字符串截取mysql

    2017-05-26 --SUBSTR(addtime, 1, 10) --substr(string string,num start,num length); --string为字符串 --sta ...

  3. 机智的MySQL优化器 --- is null

    [介绍] 工作的越久越到的的问题越多,就越是觉得一些“老话”历久弥新:由于最近的学习计划是深入的学习一遍MySQL优化器:学习过程中的一些成果 也会发布到这里,一来是为了整理自己已经知道的和新学到的, ...

  4. Linux DMA Engine framework(3)_dma controller驱动

    http://www.wowotech.net/linux_kenrel/dma_controller_driver.html

  5. Java源码阅读的真实体会(一种学习思路)

    Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈 ...

  6. .net reactor使用教程(一)——界面各功能说明(转)

    概述:安装了.net reactor之后,可以在安装目录下找到帮助文档REACTOR_HELP.chm,目前没有中文版本,里面详细介绍了.net reactor的各功能及使用场景.   安装了.net ...

  7. Kafka原理总结

    Kafka Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实 ...

  8. 大话前端解析Json对象

    一.对于标准的json对象如: var result=[{"flag":1,"macId":"2","mbId":0,& ...

  9. virtualbox 在物理机是无线网卡的时候做桥接配置

    在“计算机”图标上右键选择“管理”,在打开的“计算机管理”窗口中选择左侧的“设备管理器”,然后在右侧图示的地方右键选择“添加过时硬件”. 在打开的窗口中点击“下一步”. 选择“安装我手动从列表中选择的 ...

  10. Direct3D 11 Tutorial 7:Texture Mapping and Constant Buffers_Direct3D 11 教程7:纹理映射和常量缓冲区

    概述 在上一个教程中,我们为项目引入了照明. 现在我们将通过向我们的立方体添加纹理来构建它. 此外,我们将介绍常量缓冲区的概念,并解释如何使用缓冲区通过最小化带宽使用来加速处理. 本教程的目的是修改中 ...