多版本python共存,模块,包的导入,locals(),globals(),sys.path的作用

python多版本共存 来到python的安装目录 找到python.exe可执行文件 将其改成不同的版本名即可 例如python36 然后在cmd里面输入python36就进入到python3.6版本
mains.py为本次演示的入口程序 要引用functions.py这个函数库
使用impprt直接引用模块 后缀名可以省略 python将一个文件当做一个模块
第一种引入外部文件方法

QQ截图20171224222504.png

functions.py里面代码
多版本python共存,模块,包的导入,locals(),globals(),sys.path的作用_第1张图片
QQ截图20171224222540.png

第二种方法引入外部模块 通过变量名方式
QQ截图20171224222631.png

模块搜索方式
模块搜索的路径 首先在内置模块里面搜索 如果找不到则去sys.path里面去寻找 sys模块 内置系统模块 访问由解释器使用或维护的变量 通过它可判断当前python的版本
QQ截图20171224222755.png

看下面一段代码 这么引入会覆盖当前入口文件定义的showName()函数值 functions函数库中也有同名的showName()函数
QQ截图20171224222917.png

这么写就不会覆盖
QQ截图20171224222941.png

为了理解上面的两种情况 引入两个内置函数
locals()以字典形式返回当前局部符号表(包括定义的变量函数类内置函数文件路径等)
globals()以字典形式返回当前全局符号表
多版本python共存,模块,包的导入,locals(),globals(),sys.path的作用_第2张图片
QQ截图20171224223049.png

下面这种二者有区别
多版本python共存,模块,包的导入,locals(),globals(),sys.path的作用_第3张图片
QQ截图20171224223119.png

import 和 from ... import下面locals的区别
QQ截图20171224223146.png

QQ截图20171224223204.png

简单使用包 包的作用是管理模块的 init.py文件是区别该文件夹是普通文件夹还是python的包的
QQ截图20171224223234.png

QQ截图20171224223254.png

项目目录结构
多版本python共存,模块,包的导入,locals(),globals(),sys.path的作用_第4张图片
QQ截图20171224223326.png

可不可以直接导入common 然后引用呢 这种情况需要在 init.py中预引用 即在里面输入import common.functions(此种方式不建议使用)
QQ截图20171224223419.png

此时 init.py里面代码为
QQ截图20171224223445.png

下面这种方式需要在init.py文件中定义一个all数组来控制导入的模块 此方式为官方推荐的方式 all在init文件中控制模块的加载

QQ截图20171224223546.png

此时 init.py里面内容为
QQ截图20171224223624.png

all数组也可以定义在公共函数库中用来控制要导出哪些变量
QQ截图20171224223700.png

此时在functions.py里面加入
QQ截图20171224223803.png

QQ截图20171224223758.png

你可能感兴趣的:(多版本python共存,模块,包的导入,locals(),globals(),sys.path的作用)