模块:
随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用
一 import:
1. 执行对应文件
2. 引入变量名
为了防止  多次重复导入,python的优化手段是: 
第一次导入后就将模块名加载到内存了,后续的import仅仅是增加引用,而不是重置模块
二导入模块有独立的名称, 不会与当前函数的全局变量冲突
三 为 模块起别名的方式 : import time as tim print(tim.time) from time import time as hello
四 可一行导入多个模块 import sys,os,re from spam import read1,read2,money
五 form... import  与 import  对比
from... import...   使用更方便   缺点是 易与 当前执行文件中的名字冲突
六  sys.path从以下位置初始化 临时修改作用 (永久修改用   系统  环境变量修改 )
1. 执行文件所在的目录
2. PYTHONPATH(包含一系列目录名,与shell变量PATH语法一样) 
3. 依赖安装时默认制定
4.BASEDIR利用__file__文件 找到当前文件目录  通过 os.path.abspath(__file__)
找到文件的绝对路径目录   上上级为os.path.dirname(os.path.dirname(__file__))
七 需要强调的是:我们自定义的模块名不要跟python标准库的模块名重复
八  
1.模块名区分大小写,foo.py与FOO.py代表的是两个模块
2.你可以使用-O或者-OO转换python命令来减少编译模块的大小
   	 -O转换会帮你去掉assert语句
   	 -OO转换会帮你去掉assert语句和__doc__文档字符串
   	 由于一些程序可能依赖于assert语句或文档字符串,你应该在在确认需要
  	  的情况下使用这些选项。
3.在速度上从.pyc文件中读指令来执行不会比从.py文件中读指令执行更快,只有在模块被加载时,.pyc文件才是更快的
4.只有使用import语句是才将文件自动编译为.pyc文件,在命令行或标准输入中指定运行脚本则不会生成这类文件,因而我 们可以使用compieall模块为一个目录中的所有模块创建.pyc文件
包 
用来组织模块功能清晰 进行分别存放 
random模块 
  random.random()  0-1的浮点数
  random.randint(1,3)  取 1-3之间的整形  [1,3]
  random.randrange(1,3)   [1,3)
  random.choice(可迭代对象,2)  在其中随机取值    第二个参数 设置选取几个参数
  l = [1,2,3,4,5,6]
  random.shuffle(l)
  打乱顺序用 shuffle
 
        