模块概念

Posted fyq-ss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块概念相关的知识,希望对你有一定的参考价值。

1、模块是python程序架构的一个核心概念

2、每一个以扩展名py结尾的python源代码文件都是一个模块

3、模块名同样也是一个标识符,需要符合标识符的命名规则:①字母、下划线、数字组成 ②不能数字开头 ③不能与关键字重名

4、在模块中定义的全局变量、函数、类都是提供给外界直接使用的工具

5、开发原则:每一个模块都应该是可以被导入的

 

1.1 模块导入的方式

      模块导入应该统一写在代码的顶部,更容易及时发现冲突,顺序:内置模块,扩展模块,自定义模块 

      如果两个模块,存在同名的函数,那么后导入模块的函数,会覆盖掉先导入的函数

      一旦发现冲突,可以使用as关键字给其中一个工具起一个别名

 

1) import 模块名:一次性把模块中所有工具全部导入

    import 模块名1,模块名2   -----   不推荐使用,不符合EP8  python编码规范要求

                     -----   在导入模块时,每个导入应该独占一行

 

      使用as指定模块的别名:import 模块名 as 模块别名

      模块别名应该符合大驼峰命名法

      可以提高代码的兼容性

2) from 模块名 import 某一个工具        --- 从某一个模块中,导入部分工具

      导入之后不需要通过 模块名. ,可以直接使用模块提供的工具  

 

   from 模块名 import * 可以从模块导入所有工具,并且导入后可以直接使用工具。

   但是不推荐使用,因为函数重名并没有任何的提示,出现问题不好排查。

   与all方法搭配使用,通过__all__=【“变量名1”,“变量名2”】可以只导入all列表中的变量

 

1.2 模块的搜索顺序

   python解释器在导入模块时,会搜索当前目录指定模块名的文件,如果有就直接导入。如果没有,再搜索系统目录。

      文件的起名,不要和系统的模块文件重名

      python中每一个模块都有一个内置属性__file__可以查看模块的完整路径

 

1.3 __name__属性

      __name__属性可以做到,测试模块的代码只在测试情况下在模块内被运行,而在被导入时不会被执行

      __name__属性是python的一个内置属性,记录着一个字符串

      如果是被其他文件导入的,__name__就是模块名,如果是当前执行的程序,__name__是__main__

       # 在代码的最下方

       def  main():

       pass         

        if  __name__  ==  “__main__”:  # 根据__name__判断是否执行下方代码

          main()

 

 1.4 pyc文件(compiled编译)

  python在解释源程序时,首先处理源代码,编译生成一个二进制字节码,再对字节码进行处理,才会生成CPU能够识别的机器码

  pyc文件是由python解释器将 模块的源码 转换为 字节码 ,python这样保存字节码是作为一种启动速度的优化

  有了模块的字节码文件后,下一次运行程序时,如果在上次保存字节码之后没有修改过源代码,python将会加载.pyc文件并跳过编译这个步骤

  当python重编译时,它会自动检查源文件和字节码文件的时间戳,如果你又修改了源代码,下次程序运行时,字节码将自动重新创建

以上是关于模块概念的主要内容,如果未能解决你的问题,请参考以下文章

python库、包、模块概念辨析

驱动模块和桩模块的概念和区别

模块基础概念

Python 学习之路 - 模块概念,模块中的特殊变量,ossys模块

python 模块的概念介绍

Track基础概念