• day15


    今日所学:

    1.模块:模块的概念
    2.导入的方式:import | from import
     -- 名称空间***** | 绝对导入 | 起别名
    3.环境变量:sys.path 
    4.导入模块的顺序
    5.循环导入:模块间相互导入 

    一;模块

    常见的四种模块:module
    1.使用python编写的.py文件
    2.把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)
    3.使用C编写并链接到python解释器的内置模块
    4.已被编译为共享库或DLL的C或C++扩展

    二导入模块完成的三件事:

    第一次导入:

    import 模块名
    1.将被导入的模块编译形成对应的pyc文件
    2.进入模块,从上执行执行模块中的代码,将产生的所有名字存放在该模块文件的全局名称空间中
    3.在使用模块的文件中,产生一个与模块名(模块文件名)同名的名字,指向模块的全局名称空间
    再次导入:
    不再执行导入模块的前两步,只会走第三步:在当前模块中产生一个名字,指向第一次导入在内存中产生的全局名称空
    模块的加载顺序:内存>内置>自定义
    环境变量
    环境变量:存放路径的list,第一位默认一定是当前执行文件所在的路径
    import sys
     sys.path就是环境变量
    清空环境变量:所有导入都不能使用了
    sys.path.clear()
    添加指定路径到环境变量
    sys.path.append()
    sys.path.insert()
    from...import语法的导入:
    导入完成三件事:
    1.将被导入的模块编译形成对应的pyc文件
    2.进入模块,从上执行执行模块中的代码,将产生的所有名字存放在该模块文件的全局名称空间中
    3.在导入模块的文件中形成(一个或多个)名字指向模块全局名称空间中的(一个或多个)具体名字
    链式导入:
    t1导入m1,m1导入m2,m2导入m3
    执行流程:右键执行t1,在t1导入m1模块的地方直接进入m1,去执行m1,同理在m1执行过程中遇到导入m2,会马上进入m2,去执行m2,一直到m3,m3执行完毕,会回到m2中导入m3的语句,接着往下执行m2,m2执行完毕回到m1,以此类推返回到t1
     在整个执行流程中,遇到任何模块的二次导入,都是直接引用内存中的名称空间,不会再次进入模块
    循环导入:
    循环导入的问题点:名字没有产生就使用名字
    解决循环导入:先产生名字,在导入模块
          -- 将会产生循环导入的模块,导入语法延后 - 延后导入

    问题
    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)
  • 相关阅读:
    linux各发行版的系统平台信息获取方式调研
    linux各发行版本的系统资源获取方式调研
    查看linux版本系统平台信息方法汇总
    《这么慢,那么美》------ 听见
    学习博客大集锦
    java 面试题及答案
    Java方向如何准备BAT技术面试答案(汇总版)
    java 虚拟机系列-java内存分配、类加载,垃圾回收机制算法
    java 基础概念
    linux 脚本学习--细节问题
  • 原文地址:https://www.cnblogs.com/Fzhiyuan/p/10816849.html
Copyright © 2020-2023  润新知