美文网首页
多版本python共存,模块,包的导入,locals(),glo

多版本python共存,模块,包的导入,locals(),glo

作者: 在路上phper | 来源:发表于2017-12-24 22:38 被阅读87次

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

QQ截图20171224222504.png
functions.py里面代码
QQ截图20171224222540.png
第二种方法引入外部模块 通过变量名方式
QQ截图20171224222631.png
模块搜索方式
模块搜索的路径 首先在内置模块里面搜索 如果找不到则去sys.path里面去寻找 sys模块 内置系统模块 访问由解释器使用或维护的变量 通过它可判断当前python的版本
QQ截图20171224222755.png
看下面一段代码 这么引入会覆盖当前入口文件定义的showName()函数值 functions函数库中也有同名的showName()函数
QQ截图20171224222917.png
这么写就不会覆盖
QQ截图20171224222941.png
为了理解上面的两种情况 引入两个内置函数
locals()以字典形式返回当前局部符号表(包括定义的变量函数类内置函数文件路径等)
globals()以字典形式返回当前全局符号表
QQ截图20171224223049.png
下面这种二者有区别
QQ截图20171224223119.png
import 和 from ... import下面locals的区别
QQ截图20171224223146.png
QQ截图20171224223204.png
简单使用包 包的作用是管理模块的 init.py文件是区别该文件夹是普通文件夹还是python的包的
QQ截图20171224223234.png
QQ截图20171224223254.png
项目目录结构
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(),glo

      本文链接:https://www.haomeiwen.com/subject/muwhgxtx.html