zoukankan      html  css  js  c++  java
  • day16

                                                   第十六天的总结

    导入模板完成的三件事

    1,导入模块的时候,会把这个模块编译为对应的pyc文件

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

    3,在使用模块的文件中,产生一个与模块相同的名的全局名称,这个名称就指向模块的全局名称空间中

    需要注意的是,如果在次导入这个模块,就不会执行前两个步骤,只会执行第三个步骤

    起别名

    在导入模块的时候可以使用as 来更换导入模块的全局名称 比如 impert a  as name 这个name就是指模块文件的全局名称空间

    模块的分类

    分为三个大类 1 内置模块(系统自带的) 2 自定义模块(系统自己自定义的模块) 3 自定义模块(自己自定义的模块)

    模块的加载顺序

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

    环境变量

    # 环境变量:存放路径的list,第一位默认一定是当前执行文件所在的路径
    import sys
    # sys.path就是环境变量
    
    # 清空环境变量:所有导入都不能使用了
    sys.path.clear()
    
    # 添加指定路径到环境变量
    sys.path.append()
    sys.path.insert()

    from...import语法导入

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

    from...import *

    # 模块中默认会添加 __all__ ,__all__ 就是管理模块中能被 * 导入的变量们
    # __all__可以自定义,自定义 * 能导入的变量们, __all__的list中名字全部可以自定义
    __all__ = ['a', 'b', 'c', 'd_', '_e']
    
    
    # 系统默认添加的__all__中不会纳入 _开头的名字
    #       -- 所以默认在外界通过from...import *无法导入_开头的名字
    #        -- _开头的名字对from...import *是隐藏的,指名道姓依然可以被外界导入使用

    链式导入

    # 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)
  • 相关阅读:
    作为 务注册中心,Eureka比Zookeeper好在哪里?
    什么是 Ribbon负载均衡?
    Ribbon负载均衡能干什么?
    什么是feigin?它的优点是什么?
    Ribbon和Feign的区别?
    什么是Spring Cloud Bus?
    springcloud断路器作用?
    springcloud如何实现服务的注册?
    Eureka和Zookeeper区别?
    eureka自我保护机制是什么?
  • 原文地址:https://www.cnblogs.com/WBaiC1/p/10815653.html
Copyright © 2011-2022 走看看