模块

作者: W无花果W | 来源:发表于2021-04-18 00:29 被阅读0次

模块可以包含可执行语句和函数定义。这些语句用于初始化模块。它们仅在import语句中第一次遇到模块名时执行

每个模块都有自己的私有符号表,该表被模块中定义的所有函数用作全局符号表。因此,模块的作者可以在模块中使用全局变量,而不用担心与用户的全局变量发生意外冲突。

模块可以导入其他模块。通常,但不要求将所有import语句放在模块(或脚本)的开头。导入的模块名称放置在导入模块的全局符号表中。例如:import fibo;import语句的一个变体是将名称从模块直接导入导入模块的符号表中,例如:from fibo import fib,fib2;甚至还有一个变体可以导入模块定义的所有名称:from fibo import *,这将导入除以下划线(_)开头的名称以外的所有名称。在大多数情况下,Python程序员不使用这个工具,因为它在解释器中引入了一组未知的名称,可能隐藏了一些您已经定义的内容;导入模块时,如果模块名后跟as,那么as后面的名称将直接绑定到导入的模块,例如:import fibo as fib,那么fibo模块内部的名称可以通过fib来访问,fibo这个名字则不可以用了,对于from形式的导入用as具有同样的效果,例如:from fibo import fib as fibonacci,那么用名称fibonacci来访问fibo模块中的fib名称。

为了提高效率,每个模块在每个解释器会话中只导入一次。因此,如果您更改了模块,则必须重新启动解释器,或者,如果只是一个要交互测试的模块,则使用importlib.reload(),例如import importlib;importlib.reload(modulename)。

1.模块搜索路径

导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果找不到,则在sys.path变量给定的目录列表中搜索名为spam.py的模块。

模块site在初始化期间自动导入sys.path。可以使用解释器的-s选项抑制自动导入。

sys.path在site模块中实现

2.编译模块

为了加快加载模块的速度,Python将每个模块的编译版本缓存为__pycache__目录下的名称为module.version.pyc的文件,其中版本对编译文件的格式进行编码;它通常包含Python版本号。这种命名约定允许来自不同版本Python的编译模块共存。

Python根据编译版本检查源代码的修改日期,看它是否过期,是否需要重新编译。这是一个完全自动化的过程。此外,编译后的模块与平台无关,因此可以在具有不同体系结构的系统之间共享同一个库。

Python在两种情况下不检查缓存。首先,它总是重新编译并且不存储直接从命令行加载的模块的结果。其次,如果没有源模块,它不会检查缓存。要支持非源(仅编译)发行版,编译的模块必须位于源目录中,并且不能有源模块。

3.标准模块

相关文章

  • python常用模块!!

    os模块: stat模块: sys模块: hashlib,md5模块: random模块: types模块: at...

  • 2018-08-19

    Angular 2 技能图谱 模块 自定义模块 根模块 特性模块 共享模块 核心模块 内置模块 Applicati...

  • 【时间管理100讲】精髓全在这里啦

    理论模块 精力管理。 行动管理。 学习模块。 高空模块。 反思模块。 运动模块。 阅读模块。 旅行模块。 人际关系...

  • python基础学习(三)

    常用模块 String模块 数学模块 随机模块 OS模块 os.path模块 re模块 常用函数及操作 列表操作 ...

  • day10-异常处理和pygame显示

    一、异常处理 1.模块 导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 ...

  • 重点知识复习(异常处理)

    1.模块 导入模块(自定义模块,第三方模块,系统其他模块)import 模块 ----> 模块.内容from 模...

  • Python常用模块

    Python常用模块之time模块 Python常用模块之os模块 Python常用模块之sys模块 Python...

  • nodejs-模块

    nodejs模块 一、nodejs模块分类 1.核心模块 Core Module、内置模块、原生模块 fs模块 p...

  • Python不同网络模块网页源代码的获取

    requests模块 或者使用 selenium模块 BeautifulSoup模块 urllib模块

  • day10 pygame

    一、异常处理1.模块导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 im...

网友评论

      本文标题:模块

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