美文网首页
day17-模块部分

day17-模块部分

作者: 天行_b6d0 | 来源:发表于2020-07-27 16:12 被阅读0次

一、模块的重载(了解部分)

考虑到性能的原因,每个模块只被导入一次,放入字典sys.module中,如果你改变了模块的内容,就必须重启程序,python不支持重新加载或卸载之前导入的模块。注意,直接从sys.module中删除一个模块是无法完成卸载的,删了sys.module中的模块对象仍然可能被其他程序的组件所引用,因而不会被清除。

二、py文件的两种用途

1、一个编写好的py文件有两种用途:

  • 脚本:一个文件就是一个程序,用来被运行
  • 模块:文件中存放着一堆功能,用来被导入使用

2、python为我们内置了_name_的全局变量

  • 当py文件被当作脚本执行时,_name等于'_main'
  • 当py文件被当成模块导入时,_name_等于模块名

3、作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
if _name_ == '_main_':

三、模块的搜索路径与查找优先级

(1)先从内存中已经导入的模块中查找
(2)然后再查找内置的模块
(3)最后去sys.path列表里所存放的多个文件夹中依次查找

需要特别注意的是:我们自定义的模块名不应该与系统内置模块重名。虽然每次都说,但是仍然会有人不停的犯错。

在初始化后,python程序可以修改sys.path,路径放到前面的优先于标准库被加载。
1 >>> import sys
2 >>> sys.path.append('/a/b/c/d')
3 >>> sys.path.insert(0,'/x/y/z') #排在前的目录,优先被搜索
注意:搜索时按照sys.path中从左到右的顺序查找,位于前的优先被查找,sys.path中还可能包含.zip归档文件和.egg文件,python会把.zip归档文件当成一个目录去处理,

首先制作归档文件:zip module.zip foo.py bar.py

import sys
sys.path.append('module.zip')
import foo,bar

也可以使用zip中目录结构的具体位置
sys.path.append('module.zip/lib/python')

windows下的路径不加r开头,会语法错误
sys.path.insert(0,r'C:\Users\Administrator\PycharmProjects\a')

至于.egg文件是由setuptools创建的包,这是按照第三方python库和扩展时使用的一种常见格式,.egg文件实际上只是添加了额外元数据(如版本号,依赖项等)的.zip文件。

需要强调的一点是:只能从.zip文件中导入.py,.pyc等文件。使用C编写的共享库和扩展块无法直接从.zip文件中加载(此时setuptools等打包系统有时能提供一种规避方法),且从.zip中加载文件不会创建.pyc或者.pyo文件,因此一定要事先创建他们,来避免加载模块是性能下降。

相关文章

  • day17-模块部分

    一、模块的重载(了解部分) 考虑到性能的原因,每个模块只被导入一次,放入字典sys.module中,如果你改变了模...

  • vue模块化

    ES模块化的导入和导出html部分: 模块部分: 导出部分:

  • c#网络编程-聊天小程序

    服务器模块 sever部分 server2.cs 主程序部分 Program.cs 客户端模块 client部分 ...

  • CommonJS

    模块规范 CommonJS模块规范主要分为三部分:模块引用、模块定义、模块标识。 模块引用 var math = ...

  • Python 部分基础模块

    本文就是做一个笔记,可能看起来很乱,仅供参考 file 文件打开模式 递归打印目录 logging模块 gzip,...

  • 考霸训练营学习笔记(DAY17)

    打卡日期:2019.5.17 课程标题:Day17-复现所学内容:如何在大脑中形成知识框架 课程链接:https:...

  • 2. node的模块简介

    1. CommonJs规范 CommonJs对模块模块的定义非常简单,主要分为引用、模块定义和模块标识3个部分。 ...

  • RockPI 4A Linux内核模块

    Linux内核模块除代码实现部分外还需关注:模块定义、链接位置、模块加载和模块优先级。 一、模块定义 Linux内...

  • 计算机毕业设计SpringBoot+Vue.js学前教育图片智能

    功能 本系统七个部分分别是用户管理模块、用户信息模块、用户留言模块、管理员模块、图片识别模块、学习收藏模块,它们的...

  • Qt模块

    Qt的模块主要包含四大部分,分别是 Qt基础模块 Qt附加模块 Qt增值模块 Qt Tools其中,基础模块和附加...

网友评论

      本文标题:day17-模块部分

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