码迷,mamicode.com
首页 > 其他好文 > 详细

模块概念

时间:2019-09-10 19:39:53      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:排查   别名   二进制   编码规范   情况下   下划线   系统   查看   通过   

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重编译时,它会自动检查源文件和字节码文件的时间戳,如果你又修改了源代码,下次程序运行时,字节码将自动重新创建

模块概念

标签:排查   别名   二进制   编码规范   情况下   下划线   系统   查看   通过   

原文地址:https://www.cnblogs.com/fyq-ss/p/11502367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!