Python模块

模块:

       顶层文件:执行入口

       模块文件1

       模块文件2

       。。。

       模块在物理形式上表现为以.py结尾的代码文件。一个文件被看做一个独立的模块,一个模块也可以被看做一个文件。每个模块都有自己的名称空间。模块的文件名就是模块的名字加上扩展名.py

    Python中,模块也是对象。在一个模块的顶层定义的所有变量都在被导入时成为了被导入模块的属性。

       一个Python程序通常包括一个顶层程序文件和其他的模块文件。顶层文件包含了程序的主要控制流程,模块文件为顶层文件或其他模块提供各种功能性组件。模块首次导入(重载--reload)时,顶层程序代码(不在函数内的代码)会被立即执行,而位于函数体内的代码直到函数被调用后才会执行。

        Python自带的模块---Python标准库

        在导入模块时,只能使用模块名。

        import   导入指定的整个模块,包括生成一个以模块名命名的名称空间。

            import module1

            import module as module_alias(别名--自定义的名称空间)

        from -  import 常用于只导入指定模块的部分属性至当前名称空间。可能导致属性覆盖

            from module import name1

       

       import 和 from import 是赋值语句,因此它们可以嵌套在if 测试中,出现于def中等等。所有来自模块的属性仅在import语句执行后才能使用。

       import 和 from 都是隐形赋值语句,import是将整个模块对象赋值给一个变量名(模块名称)

from是将一个或者多个变量名赋值给导入此模块的模块中的同名对象。

       模块就是名称空间,可以通过__dict__或者dir(M) 获取。

       模块时一个独立的作用域(本地变量就是全局变量)

       import的工作机制

              找到模块文件(指定路径下搜索)---编译成字节码(导入时就会编译,顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件)----执行模块的代码来创建其所定义的对象

       模块只有在第一次导入时才会执行上面的步骤,后续的导入操作只不过是提取内存中已加载的模块对象,reload()用于重新加载模块。

       模块搜索:程序的主目录--PYTHONPATH目录(如果设置此变量)---标准链接库目录---任何.pth文件的内容(如果存在)=====》》这四个组件组合起来即为sys.path所包含的路径,而Python会选择在搜索路径中的第一个符合导入文件名的文件。

        

        

原文地址:https://www.cnblogs.com/Beny-Bruce/p/5140400.html