多版本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里面代码
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 解释器来编程从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。 为此...
    chen_000阅读 3,499评论 0 3
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,823评论 0 5
  • 模块 一个模块就是包含了python定义和声明的文件,文件名就是模块名字加上.py后缀,通过导入模块来引入其他文件...
    断尾壁虎V阅读 5,521评论 0 1
  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,297评论 22 257
  • (今天行情走势正如昨天分析:后市行情,明天周五,下方7.21支撑有效后,上方7.8阻力,震荡区域,一旦打破,混改行...
    zzh0186阅读 1,183评论 0 0