一、模块篇

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

    ·每一个以扩展名 .py 结尾的python源代码都是一个模块

    ·模块名同样是一个表识符,同样符合命名规则

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

    ·模块就好比工具包,想用这个工具包,就要先导入这个模块

(2)、模块的两种导入方式:

    A、 import 导入

        import 模块名1, 摸快名2,。。。

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

                 import 模块名1
                 import 模块名2

        -- 使用方法:

            导入之后,通过 模块名. 使用模块提供的工具  ---  全局变量、函数、类

        -- 模块别名:

            如果模块的名字太长,我们可以另起一个模块的别名,好记you简短(大驼峰命名法)

            使用 as 指定模块的别名:

            import 模块名 as 模块别名

    B、 from...import 导入

        ·如果希望 从某一个模块 中,导入 部分 工具,就可以使用 from...import 方式

        ·[import 模块名]  ----  是一次性 把模块中 所有工具全部导入,并且通过模块名/别名 访问

        -- 导入方法:

            # 从 模块 导入 某一个工具
            from 模块名 import 工具名

        -- 使用方法:

            导入之后,不需要通过 模块名. 来访问

            可以直接使用 模块提供的工具  ---  全局变量、函数、类

        -- 注意:

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

                ==>开发时,导包的代码应该写在代码的顶部,更容易及时发现冲突

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

        -- 知道即可:

            除了 [from 模块名 import 工具名] 导入特定的工具之外,

            还可以使用  [from 模块名 import *] 来导入所有的工具

            但不推荐,因为发生冲突时不容易去解决问题,例如同名,但可以用来测试程序,就很方便了


(2)原则

    ·一个独立的 python 文件 就是一个模块

    ·在导入文件时,文件中 所有没有任何缩进的代码 都会本执行一遍


(4)扩展

    ·模块的搜索顺序:

        - 搜索当前目录指定的模块名的文件,如果有,就直接导入

        - 如果没有,再搜索系统目录

            @@@ 这就提示我们,给文件起名时,不要和系统的模块文件同名

            那么,我们是怎么知道我们定义的模块名是否与系统模块文件同名或者说怎么知道要导入的模块在搜索的前后呢,别急,下面有说明

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

            比如要查找 myname 模块的路径,可以这样:

                print(myname.__file__)

    ·__name__ 内置属性

        - 测试模块的代码 只在测试情况下被运行,而在被导入时不会被执行

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

        - 如果是被其他文件导入的,__name__就是模块名

        - 如果是当前执行的程序,__name__是__main__


        - 贴一段一__name__有关的代码:

            # 导入模块
            # 定义全局变量
            # 定义类
            # 定义函数

            # 在代码的最下方
            def main():
                #...
                pass

            # 根据__name__,判断是否执行下方代码
            if __name__ == "__main__":
                main()









 

10-07 20:23