zoukankan      html  css  js  c++  java
  • 第十六章 模块

    1.模块

    常见的四种模块:module

      1.使用python编写的.py文件

      2.把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)

      3.使用 C 编写并连接到python解释器的内置模块

      4.已经编译为共享库或 DLL 的 C 或 C++扩展

    1、  什么是模块:一些列功能的集合体。

    2、  为什么会出现模块:很多相似的功能,要统一管理,将这些功能放在一个文件中,

                该文件就是管理这些功能的集合体,我们命名为模块。

    3、 怎么使用模块:

          __在要使用模块功能的文件中导入模块:import 模块名

                         模块名:用来管理一系列功能的文件名。

    4、 在哪使用模块:

                        __在所有要使用模块中功能的文件中导入并使用模块。

    2. 导入模块完成的三件事

      首次导入:

      import  模块名

           1、将被导入的模块编译形成对应的 pyc 文件

      2、进入模块,从上执行模块中的代码,将产生的所有名字存放在该模块文件的全局名称空间中

      3、在使用模块的文件中,产生一个与模块名(模块文件名)同名的名字,指向模块的全局名称

          空间。

         再次导入:

           __不再执行导入模块的前两步,只会走第三步,在当前模块中产生一个名字,指向第一次导

          入 在内存中产生的全局名称空间。

    3. 起别名

        import  模块名  as 别名

        重点:导入一旦起别名,原模块名变量失效,本质只产生了别名变量指向模块文件的全局名称

                   空间。

    4. 模块的分类

      大方向:内置(built-in) | 自定义(系统提供 | 第三方提高 | 自己自定义)

    5. 模块的加载顺序

      内存 > 内置 > sys.path (安装环境变量中路径的先后顺序逐一加载)

    6. 环境变量

      环境变量:存放路径的list,第一位默认一定是当前执行文件所在的路径
      import sys
         sys.path就是环境变量

      清空环境变量:所有导入都不能使用了         sys.path.clear()

      添加指定路径到环境变量
      sys.path.append()
      sys.path.insert()

    7. form...import语法导入

    导入完成的三件事
     1.将被导入的模块编译形成对应的pyc文件
     2.进入模块,从上执行执行模块中的代码,将产生的所有名字存放在该模块文件的全局名称空间中
     3.在导入模块的文件中形成(一个或多个)名字指向模块全局名称空间中的(一个或多个)具体名字

            from 模块名 import 模块中的名字1, ..., 模块中的名字n
            from 模块名 import 名字 as 别名


            from...import导入依赖环境变量 sys.path

    8. form...import *

      模块中默认会添加 __all__ ,__all__ 就是管理模块中能被 * 导入的变量们
       __all__可以自定义,自定义 * 能导入的变量们, __all__的list中名字全部可以自定义
      __all__ = ['a', 'b', 'c', 'd_', '_e']


      系统默认添加的__all__中不会纳入 _开头的名字
       -- 所以默认在外界通过from...import *无法导入_开头的名字
        -- _开头的名字对from...import *是隐藏的,指名道姓依然可以被外界导入使用

    9. 循环导入

    循环导入的问题点:名字没有产生就使用名字
         解决循环导入:先产生名字,再导入模块
         -- 将会产生循环导入的模块,导入语法延后 - 延后导入


     问题
     m1.py
    import m2
    print(m2.y)
    x = 666

    # m2.py
    import m1
    print(m2.x)
    y = 888

     

     解决
     m1.py
    x = 666
    import m2
    print(m2.y)


     m2.py
    y = 888
    import m1
    print(m2.x)

            

     

  • 相关阅读:
    xgzc— math 专题训练(一)
    floyd判圈算法
    CF961G Partitions
    luoguP4778 Counting swaps
    AT3913 XOR Tree(巧妙转换+状压dp)
    手动实现aop编程
    代理模式
    spring重点一:处理对象创建时间 个数以及方式
    spring helloword
    spring用来干什么,解决的问题
  • 原文地址:https://www.cnblogs.com/sry622/p/10816004.html
Copyright © 2011-2022 走看看